繁体   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