Java术语中的对象初始化
我看到this博客,他们使用术语匿名对象实例化
这真的是“官方术语”吗
在任何情况下,这种代码的官方术语是什么:调用一个方法,而不显式地创建一个名为的对象,如本例所示 (更新:我指的是显式地给对象命名,而不是显式地创建对象) :
public class Predictions3Client {
public static void main(String[] args) {
new Predictions3Client().demo();
}
private void demo() {
Localhost_Predictions3ResourcesP.Root root = Localhost_Predictions3ResourcesP.root();
Localhost_Predictions3ResourcesP.Root.Xml xmlGetter = root.xml();
String xml = xmlGetter.getAsXml(String.class);
System.out.println("The raw XML:\n" + xml);
}
}
new Predictions3Client().demo();
vs
Predictions3Client p3c = new Predictions3Client ();
p3c.demo();
我不认为它是“方法链”或“流畅界面”,因为它是对象相关的而不是方法相关的。
# 1 楼答案
在Java中,匿名对象是没有类名或抽象类名的对象。简而言之,您必须填写“缺失”方法来构建类,而那些“缺失”方法与类名无关
这就是一个例子。如果它是一个完全命名的类,它看起来像
请注意,匿名类仍在构造中,但它们是以缺少的方法作为参数构造的(它们在花括号之间提供)。所以,从技术上讲,您仍然在“创建”一个类,您仍然在“创建一个实例”一个类,但该类没有唯一可识别的类名
因此,我会用更简单的短语“匿名对象创建”来指代“匿名对象实例化”
请记住,第一个示例的类名没有被正确地称为“Runnable”类,因为并非所有Runnable都会打印出“Hi,我是匿名的”,如下例所示
然而,在上面的例子中,将这两个类都称为Runnable是合适的,因为它们都实现了Runnable接口