有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    在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都会打印出“Hi,我是匿名的”,如下例所示

       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接口