我正在编写一段代码,如果对象是某个类的实例,我必须在其中强制转换它。
像往常一样,我使用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(): 输出:
问题内容: 我有一些调用的代码。 不过,这将返回null。 当我从命令行而不是从Eclipse启动相同的代码时,它将返回一个类加载器。 我可以破解代码来做到这一点… 两者都被编译并使用相同的JVM运行。(我确定99.99%)。 任何人都知道为什么第一个会为类加载器返回null? 编辑: 我的问题是:“没有人知道为什么同一类通过Eclipse启动时会返回null,而从命令行加载时会返回类加载器。”