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

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

所以,我制作了自己的 class 指南,其中包含一些我想在新 window 中显示的文本,当用户按下某个按钮时。

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;
    }
}

但是当我在我的 class 中这样称呼这个 class 时:

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

我没有得到像 "Norman is the man!" 这样的字符串,而是像 uv.Guidelines@12ce0bf 这样的字符串。我想在将对象转换为字符串时存在问题。我怎样才能得到字符串?

String content 一个 class 字段,定义一个方法 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());

根据您的代码,您正在做的是定义一个 class,其构造函数名称为 Guidelines,它采用一个字符串值,并且您有一个名为 guidelines 的方法returns 一个字符串并接受一个字符串值。

现在当您创建 object/instance

Guidelines content = new Guidelines("norman");

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

Guidelines content = new Guidelines("norman");

引用变量保存了对我们案例内容中对象的引用。如果你打印一个引用变量,你会看到那个特定对象的 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")));