簡體   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