如何使用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());
}
}
}
答案 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()
而不是你想要的价值。