繁体   English   中英

Java中的对象初始化-术语

[英]Object initialization in Java - terminology

我遇到了这个博客,他们使用了“ 匿名对象实例化”一词。

它真的是一个“官方术语”吗?

无论如何,这种代码的正式术语是什么:调用一个方法而不像本例中那样显式地创建带有其名称的对象(UPDATE:我指的是显式地给对象命名而不是显式地创建对象):

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();

Predictions3Client p3c = new Predictions3Client ();
p3c.demo();

我不认为它是“方法链接”或“ Fluent接口”,因为它与对象相关,与方法无关。

在Java中,匿名对象是没有类名或抽象类名的对象。 简而言之,您必须填写“ missing”方法来构建类,并且这些“ missing”方法不与类名绑定。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM