[英]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.