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