用于访问类方法的不同签名

时间:2014-05-26 16:01:57

标签: java servlets method-signature

我真的有点困惑。调用可访问类方法或变量的正常签名是(类/对象)。(方法/变量)。那我们如何给System.out.println()?由于System.out仅提供返回类型,但不属于同一个类。同样在servlet中,“this.getServletConfig()。getInitParameter(”defaultUser“)”对我来说没有意义,因为getServletConfig()和getInitParameter都是同一个类的成员函数,所以签名就像class.method1() .method2(),其中method1和method2是同一个类的成员函数。有人可以解释..

示例:

Class CascMethodClassB() 
{ 
public CascMethodClassA methodTest()
{
    CascMethodClassA obj1 = new CascMethodClassA();
    return obj1;
}
} /*Class CascMethodClassB ends*/

Class CascMethodClassA() 
{
public int varTest;

public CascMethodClassA()
{
varTest = 7;
}

} /*Class CascMethodClassA ends*/


Class CascMethodClassC() 
{
CascMethodClassB obj2 = new CascMethodClassB();
int varTestC = obj2.methodTest().varTest

public static void main(String[] args)
{
System.out.println("varTest in CascMethodClassA is: "+ varTestC);

} /*Class CascMethodClassC ends*/

}

三江源, Fraggy。

3 个答案:

答案 0 :(得分:1)

  • System.outPrintStream类型的公共类变量,而不是 方法。因此,您可以在其上调用println方法,该方法返回void
  • this.getServletConfig().getInitParameter("defaultUser")制作 一旦你理解了链接方法的调用,你就会感觉很完美。在 这种情况,你是:
    • 调用Servlet
    • 的当前实例
    • 获取其实例字段的类型ServletConfig
    • 的值
    • 通过调用String对象上的getInitParameter方法获取返回的ServletConfig
  • 最后,方法的签名由方法的名称和参数类型
  • 组成

答案 1 :(得分:1)

两者都是不同的情况。

第一种情况System类中的outis a public static member。成员out的类型为PrintStream,因此调用

System.out.println()

将从println()对象(PrintStream)调用方法out

第二种情况,称为method chaining。会发生什么是class.method1()将返回一个对象实例,根据Java docs它将返回一个ServetConfig对象。因此,您可以再次从该返回的对象调用方法。看到该呼叫的另一种方式是(括号是多余的,只是在那里你可以看到呼叫的顺序):

(ClassName.someMethod1()).someMethod2();

答案 2 :(得分:1)

每个非void方法都返回一个类型,该类型可能与声明类的类型不同,因此链式方法/字段将具有返回类型的方法(不是它调用的类或者第一种方法定义的类。)

例如,要分解System.out.printkln()

System.out // out is a public field of type PrintStream
.println() // println() is a method of PrintStream, not System