簡體   English   中英

在Java中的方法,變量或對象之間使用兩個句號

[英]Using two full stops in java between methods, variables, or objects

我敢肯定,互聯網上已經有Java基本功能的解釋,就像我想像的那樣,但是由於我完全不知道該操作試圖達到什么目的,因此我沒有正確地描述搜索,並且沒有結果解釋我的困惑。 因此,請引導我朝正確的方向前進,因為我找不到搜索這意味着什么的方法。

因此,下面有一個我很困惑的示例,從GL2 gl = drawable.getGL().getGL2();行開始: GL2 gl = drawable.getGL().getGL2(); 我知道如何將方法用於對象(例如object.method()),此類對象或變量,但這引號不同,有兩個句號和方法,而沒有一個。 它到底想做什么? 這似乎是它的使用getGL2()方法,但有getGL(),當我嘗試測試使用相同的形式與一些方法我做了我不能創建一個“GL”對象給我,然后像這樣同時將它們鏈接起來。 因此,我將使用變量或對象並執行“ .method()。method2()”,它將無法正常工作。

另外,我不明白它是如何創建對象“ GL2 gl ”的,其中GL2是對象的類型,而gl是對象的名稱,但是在“ =“之后,沒有像我通常看到的那樣“新”了。

代碼示例:

  public void init (GLAutoDrawable drawable) { 
    GL2 gl = drawable.getGL().getGL2();
    //GL2 gl2 = drawable.getGL().getGL2(); 
    gl.glClearColor(0,0,0,1); // black
    //gl2.glClearColor(0,0,0,1); 
  }

首先,方法init接受一個drawable的參數。

drawable的類型為GLAutoDrawable ,其類型為getGL()

例如,類GLAutoDrawable可能是這樣的:

public class GLAutoDrawable {

  // other stuff

  public GL getGL(){
    // other stuff
    return gl;
  }

  // other stuff

}

在這里, getGL()返回名為gl的變量,其類型為GL 盡管您提供的代碼中未指定此名稱,但我僅假設它稱為GL

(有關返回語句的更多信息,請閱讀http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html

然后,從getGL()返回的變量將調用方法getGL2()

例如, GL類可能看起來像這樣:

public class GL {

  // other stuff

  public GL2 getGL2(){
    // other stuff
    return gl2;
  }

  // other stuff

}

該方法getGL2()在類GL返回調用的對象gl2 ,這是在你的代碼最終的變量是什么。

基本上, GL2 gl = drawable.getGL().getGL2(); 與以下內容相同:

GL g = drawable.getGL();
GL2 gl = g.getGL2();

除了可以節省空間而不必命名新變量。

GL2 gl = drawable.getGL().getGL2();

drawable具有一個getGL()方法,該方法帶有一個返回對象(假設它是GL )。 GL對象具有getGL2()方法,因此您只是在getGL2()的結果上getGL()

這可以使代碼更易於閱讀,但是如果您的“鏈”中的任何一個返回null,那么您將遇到麻煩。

在對象上調用方法包括四個部分:對象引用,方法名稱,參數,返回值。

varToStoreReturnValue = objectReference.methodName(parameters);

由於方法可以返回對象,因此可以調用方法以檢索對象引用,並在該對象引用上調用另一個方法:

objectReference1 = objectReference.methodName(parameters);
varToStoreReturnValue = objectReference2.anotherMethodName(newParameters);

上面的示例可以寫成:

varToStoreReturnValue = objectReference.methodName(parameters).anotherMethodName(newParameters);

如果不需要任何參數,則如下所示:

ReturnType varToStoreReturnValue = objectReference.methodName().anotherMethodName();

...在您的情況下如下所示:

GL2 gl = drawable.getGL().getGL2();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM