在我的面试中,面试官问我:“我们能否创建没有名称的类?”由于我不确定是否真的可以创建没有名称的类,所以我回答“不行”。后来,我尝试搜索该问题的答案,但是并没有找到明确的答案。如果有人能够清楚地解释这个类是什么,以及如何实例化这个类,我将不胜感激。
是的,这被称为匿名类/结构。
在C++中:
class {
} x;
x
是一种类型的对象,你不能再创建更多了,因为,嗯,毕竟如果这个类没有名字,你该怎么做呢……
如何调用构造函数和析构函数?
你不需要。在Java和C++中,构造函数和析构函数与类名相同(它们不像PHP中是__construct
或其他什么名字),而缺少的类名有点儿妨碍。
在Java中,它也被称为匿名类。
// create a new instance of an anonymous class.
Serializable s = new Serializable() {
};
注意:在JVM中,所有的类都有一个名称,它是由编译器为您生成的。
你不能定义构造函数,但它可以有一个实例初始化块来完成同样的事情。
null
,ClassLoader.checkName(String)
认为null
是可以接受的,但我不确定JVM代码是否也是如此(而且我懒得去查)。 - bestsss