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

时间:2017-02-23 10:29:49

标签: java string-conversion

所以,我创建了自己的名为Guidelines的类,当用户按下某个按钮时,它将包含我想在新窗口中显示的一些文本。

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!"这样的字符串,而是uv.Guidelines@12ce0bf之类的字符串。我想将对象转换为字符串存在问题。我怎样才能得到字符串?

3 个答案:

答案 0 :(得分:1)

执行字符串内容类字段,定义方法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());

答案 1 :(得分:1)

你可以覆盖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());




答案 2 :(得分:1)

根据你的代码你正在做的是你正在定义一个带有构造函数名Guidelines的类,它接受一个字符串值,你有一个名为guidelines的方法,它返回一个String并接受一个字符串值。

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

Guidelines content = new Guidelines("norman");

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

Guidelines content = new Guidelines("norman");

引用变量在我们的case内容中保存对象的引用。如果您打印引用变量,您将看到hashCode的特定对象的uv.Guidelines@12ce0bf

您只需要执行对方法guidelines(String buttonName)的调用,并且为了调用您必须将该方法声明为公共方法。

String buttonName = content.guidelines("norman);

然后传递变量buttonName

JTextArea textArea = new JTextArea(buttonName);

或者您可以直接致电

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