我遇到了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();
我不认为这是“方法链接”或“Fluent界面”,因为它与对象相关而非方法相关。
答案 0 :(得分:0)
在Java中匿名对象是没有类名或具有抽象类名的对象。简而言之,您必须填写“缺失”方法来构建类,并且那些“缺失”方法不依赖于类名。
Runnable runnable = new Runnable() {
public void run() {
System.out.println("Hi, I'm anonymous!");
}
}
就是一个例子。如果它是一个完全命名的类,它看起来像
public class HelloRunnable implements Runnable {
public void run() {
System.out.println("Hi, I'm not anonymous, I'm a HelloRunnable!");
}
}
请注意,仍然构造匿名类,但它们是使用缺少的方法作为参数构造的(它们是在花括号之间提供的)。所以,从技术上讲,你仍在“创建”一个类,你仍然在“创建一个类的实例”,但该类没有单一的,唯一可识别的类名。
因此,“匿名对象实例化”我将用更简单的短语“匿名对象创建”来引用
请记住,第一个示例的类名称没有正确地称为“Runnable”类,因为并非所有runnable都会打印出“嗨,我是匿名的”,如下例所示。
Runnable runnable = new Runnable() {
public void run() {
System.out.println("Hi, I'm anonymous!");
}
}
runnable = new Runnable() {
public void run() {
System.out.println("Hi, I'm anonymous's cousin!");
}
}
但是,在上面的例子中,将这两个类称为Runnable是合适的,因为它们都实现了runnable接口。