繁体   English   中英

Java-如何将对象从自己的类转换为主类中的字符串?

[英]Java - How can I convert an object from my own class to a string in the main class?

因此,我制作了自己的名为“指导方针”的类,当用户按下某个按钮时,该类将包含一些要在新窗口中显示的文本。

public class Guidelines {

    public Guidelines(String buttonName){
        guidelines(buttonName);
    }

    private String guidelines(String buttonName){
        String content = "";
        if (buttonName.equals("norman"))
            content = "Norman is the man!";
        if (buttonName.equals("nielsen"))
            content = "Nielsen is the best!";
        if (buttonName.equals("fitt"))
            content = "Fitt rocks!";
        return content;
    }
}

但是当我在我的主类中这样调用该类时:

Guidelines content = new Guidelines("norman");
JTextArea textArea = new JTextArea(String.valueOf(content));

我没有得到"Norman is the man!"这样的字符串"Norman is the man!" ,但类似uv.Guidelines@12ce0bf 我想在将对象转换为字符串时存在问题。 我如何获得字符串?

String内容设为类字段,定义方法getContent并执行以下操作:

 JTextArea textArea = new JTextArea(Guidelines.getContent());

例:

 public class Guidelines {
    String content;
    public Guidelines(String buttonName){
        guidelines(buttonName);
    }

    private String guidelines(String buttonName){

        if (buttonName.equals("norman"))
            content = "Norman is the man!";
        if (buttonName.equals("nielsen"))
            content = "Nielsen is the best!";
        if (buttonName.equals("fitt"))
            content = "Fitt rocks!";
        return content;
    }

    public String getContent(){
        return content;
    }
}

接着

Guidelines content = new Guidelines("norman");
JTextArea textArea = new JTextArea(content.getContent());

您可以覆盖toString方法,

public class Guidelines {

    private final String content;

    public Guidelines(String buttonName){
        content = guidelines(buttonName);
    }

    private String guidelines(String buttonName){
        String content = "";
        if (buttonName.equals("norman"))
            content = "Norman is the man!";
        if (buttonName.equals("nielsen"))
            content = "Nielsen is the best!";
        if (buttonName.equals("fitt"))
            content = "Fitt rocks!";
        return content;
    }

    @Override
    public String toString() {
        return content;
    }
}

然后,您可以调用toString方法来获取内容的值

 Guidelines content = new Guidelines("norman"); TextArea textArea = new JTextArea(content.toString()); 

根据您的代码,您正在执行的操作是定义一个带有构造函数名称Guidelines的类,该构造函数采用字符串值,并且您有一个名为guidelines的方法,该方法返回String并采用字符串值。

现在,当您创建对象/实例时

Guidelines content = new Guidelines("norman");

它会为您创建一个Guidelines对象,并通过传递norman来调用guidelines(String buttonName)方法。 现在正在调用构造函数,并且构造函数正在调用方法,但是构造函数没有返回任何内容。 所以每当你写作

Guidelines content = new Guidelines("norman");

reference变量在我们的案例内容中包含对对象的引用。 如果打印引用变量,你会看到hashCode特定对象在你情况下, uv.Guidelines@12ce0bf

您需要做的就是像这样执行对方法guidelines(String buttonName)调用,并且要进行调用,您必须将方法声明为public。

String buttonName = content.guidelines("norman);

然后传递变量buttonName

JTextArea textArea = new JTextArea(buttonName);

或者你可以直接打电话

JTextArea textArea = new JTextArea(String.valueOf(content.guidelines("norman")));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM