我正在编写一段代码,如果对象是某个类的实例,我必须在其中强制转换它。
像往常一样,我使用instanceof
检查兼容性。
问题是检查永远不会满足,因为对象属于“奇怪”类。
例如当我调用方法getClass()时。getSimpleName()
在这个对象上,它返回类的名称$*
(例如ViewPart$1
而不是ViewPart
)。
这是什么意思?是否有解决方案或解决方法?
$表示内部类。例如考虑两个类
public class TopClass {
class SubClass {
// some methods
}// inner class end
} // outer class end
如果你编译这段代码,你会得到两个类文件。类和TopClass$子类。班
检查你的ViewPart类是否有任何内部类。希望有帮助。
这些是匿名类的实例ViewPart$1
是ViewPart
中定义的第一个匿名类,但这并不意味着它是ViewPart
的子类。它很可能是某个侦听器接口的异常实现。
它显示一个内部类(匿名类(如果有数字)或命名类)。例如:
class Foo {
static class Bar {
}
}
类Foo的名称。条形码是
Foo$Bar
。现在如果我们有:
class Foo {
static void bar() {
Runnable r = new Runnable() {
public void run() {};
};
System.out.println(r.getClass());
}
}
将打印
Foo$1
。
您可以在javac创建的类文件的命名中看到相同的效果。
问题内容: 我正在编写一段代码,如果它是某个类的实例,则必须在其中强制转换。 和往常一样,我用于检查兼容性。 问题在于,由于对象属于“奇怪”类,因此永远无法满足检查要求。 例如; 当我在此对象上调用方法时,它将返回类+的名称(例如而不是)。 这是什么意思?有解决方案或解决方法吗? 问题答案: 那显示一个 内部类 (匿名(如果有数字)或命名)。例如: 班级的名称是。现在,如果我们有: 那将打印出来。
问题内容: 我在一个子类中,当我尝试查找超类的名称时,我尝试了super.getClass(),但它仅返回了子类的名称。为什么? 问题答案: 应该做。
问题内容: 我正在运行程序 我得到的输出是。 我不明白这条线 子女的父母的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(): 输出:
当我尝试从eclipse中的资源目录加载一个图像时,我总是得到一个空指针异常(null pointer exception,NPE)。res文件夹位于项目目录中。这是我得到NPE的地方: 当我移除getClass().getReource()时,将返回图像: 当我打印res目录的URL时,我得到null: 谢谢