class test {
public static void main(String[] args) throws java.lang.Exception {
new Animal();
}
}
class Animal {
Animal() {
System.out.println("sound! sound!");
}
}
这段代码的编译方式很好,因为我们知道如果不使用类的引用变量,我们就不能单独使用new运算符了,这里我只提及" new Animal();"并且构造函数正在执行没有任何错误,怎么??
答案 0 :(得分:3)
你说:
我们知道,如果不使用引用变量,我们就无法使用 单独的新运营商
你可以。生成的对象引用根本不会分配给任何内容,并且无法进一步访问分配/实例化的对象。请注意,如果没有保持引用,您实例化的Animal对象将成为即时垃圾收集的候选对象(尽管main()
将在您的示例中立即退出)
答案 1 :(得分:1)
你可以根据需要做new Animal();
,唯一的办法就是创建对象但没有参考,以后你可以用它来处理对象......
所以这个:
public static void main(String[] args) {
new Animal();
}
很好,它编译并运行没有问题
这里只是一个来自JDK的例子:
来自DateFormat
类
public final String format(Date date)
{
return format(date, new StringBuffer(),
DontCareFieldPosition.INSTANCE).toString();
}
匿名创建StringBuffer
对象并传递给格式方法...
答案 2 :(得分:0)
仅仅因为您没有将new Animal()
分配给变量,这并不意味着它不会被初始化。
您无法使用它或再次参考它。
答案 3 :(得分:0)
您正在创建一个匿名对象。执行构造函数后; GC将清理此对象。
https://www.quora.com/What-is-anonymous-object-instantiation