我正在编写一段代码,如果它是某个类的实例,则必须在其中强制转换。
和往常一样,我instanceof
用于检查兼容性。
问题在于,由于对象属于“奇怪”类,因此永远无法满足检查要求。
例如;
当我getClass().getSimpleName()
在此对象上调用方法时,它将返回类+的名称$*
(例如ViewPart$1
而不是ViewPart
)。
这是什么$*
意思?有解决方案或解决方法吗?
那显示一个 内部类 (匿名(如果有数字)或命名)。例如:
class Foo {
static class Bar {
}
}
班级的名称Foo.Bar
是Foo$Bar
。现在,如果我们有:
class Foo {
static void bar() {
Runnable r = new Runnable() {
public void run() {};
};
System.out.println(r.getClass());
}
}
那将打印出来Foo$1
。
您可以在javac创建的类文件的命名中看到相同的效果。
我正在编写一段代码,如果对象是某个类的实例,我必须在其中强制转换它。 像往常一样,我使用检查兼容性。 问题是检查永远不会满足,因为对象属于“奇怪”类。 例如当我调用方法在这个对象上,它返回类的名称(例如而不是)。 这是什么意思?是否有解决方案或解决方法?
问题内容: 我在一个子类中,当我尝试查找超类的名称时,我尝试了super.getClass(),但它仅返回了子类的名称。为什么? 问题答案: 应该做。
现在我学习Java已经有一段时间了,但有一个概念我很难理解。我习惯了这样的方法 我知道上面的方法会返回一个整数或字符串,无论你想要什么数据类型 现在我在问自己,上述方法的回报类型到底是什么。我如何使用返回的东西做其他事情? 我还看到人们将对象作为这样的参数传递给方法 这又是怎么回事?在什么情况下,上述“风格”是必要的,需要避免什么陷阱? 使用对象而不是整数之类的值让我感到困惑。
问题内容: 我正在运行程序 我得到的输出是。 我不明白这条线 子女的父母的PID为1 应该是3071? 问题答案: 因为在孩子要求其父母的pid之前,父进程已完成。 进程完成后,其所有子级都将重新分配为init进程的子级,其pid为1。 尝试使用父母的代码来等待孩子执行。然后,它应该会按预期工作。
问题内容: 在下面的程序中,你可以看到.5除以外的每个值都略小于四舍五入的值0.5。 版画 我正在使用Java 6 update 31。 问题答案: 摘要 在Java 6(可能更早)中,实现为。1 这是一个规范错误,恰恰是这种病理情况。2 Java 7不再强制执行此无效的实现。3 问题 0.5 + 0.499999999999999999994的双精度正好为1: 这是因为0.49999999999
问题内容: 为什么此代码有时返回1E + 1,而对于其他输入(例如17)却没有以科学计数法打印输出? 问题答案: 使用bigDecimal.toPlainString(): 输出: