如何使用toString打印对象的特定实例

时间:2014-11-14 03:14:11

标签: java arrays abstract-class subclass instanceof

如何使用toString打印对象的特定实例?

所以基本上用户正在输入信息。根据输入,它将保存在实例A或实例B中。实例A和B都是具有重写toString方法的子类。所以用户的输入保存在一个数组中。我怎样才能将所有作为A实例的输入打印出来?

这是我目前拥有的代码,但它无效。

public static void printA(ABC[] inputs)
    {
        for(int i = 0; i < inputs.length; i++)
        {   
            if(inputs[i] instanceof A)
            {
                JOptionPane.showMessageDialog(null, inputs.toString());
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

您正在迭代inputs,但正在测试clients。这就是我更喜欢使用for-each loop的原因,我建议您使用StringBuilder构建单个邮件然后再显示一次。像,

public static void printA(ABC[] inputs) {
    StringBuilder sb = new StringBuilder();
    for (ABC input : inputs) {
        if (input instanceof A) {
            sb.append(input).append(System.lineSeparator());
        }
    }
    JOptionPane.showMessageDialog(null, sb.toString().trim());
}

修改

您获得的输出(&#34; LClient; @ 20d9896e&#34;)是因为您正在显示inputs.toString()。数组不会覆盖toString(),您可以使用Arrays.toString(Object[])之类的

String msg = Arrays.toString(inputs);

但是你将获得数组中的所有项目。另外,请确保Client覆盖toString()

答案 1 :(得分:0)

你只需要

JOptionPane.showMessageDialog(null, inputs[i].toString());

因为你试图显示array.toString()而不是你想要的价值。