【发布时间】:2012-09-17 16:58:37
【问题描述】:
我有一组代表数字逻辑门的类,我想创建一个 toString() 命令,它将递归地通过并打印它们。问题是它们可以包含 Gate、Boolean 或 Integer,当我调用 Boolean.toString() 或 Integer.toString() 时,会打印对象 ID 而不是分配的值。有没有办法在这些对象上通用调用 toString() (或类似的)命令并让它们打印分配的值?
使用下面的代码,输出类似于:“AND([I@6ca1c,[Z@1bf216a)”
我希望它看起来像:“AND(11,true)”
public static class Gate{
public Object in1;
}
public static class ANDgate extends Gate{
public Object in2;
public ANDgate(Object first,Object second){
in1 = first; // these can be Integer, Boolean, or another Gate
in2 = second;
}
public String toString(){
return("AND(" + in1 + "," + in2 + ")");
}
}
public static class NOTgate extends Gate{
public NOTgate(Object obj){
in1 = obj; // this can be Integer, Boolean, or another Gate
}
public String toString(){
return("NOT(" + in1 + ")");
}
}
【问题讨论】:
-
这似乎不是散列值 - 看起来像 JVM 对象 ID(散列值是一个 int)。顺便提一句。 Integer.toString() 不返回哈希值,它以十进制格式返回整数值。也许您可以提供一个示例如何使用此方法?
-
@home:抱歉,我仍在努力理解 Java 中所有正确的语言。我已将问题更新为更准确。