我真的有点困惑。调用可访问类方法或变量的正常签名是(类/对象)。(方法/变量)。那我们如何给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。
答案 0 :(得分:1)
System.out
是PrintStream
类型的公共类变量,而不是
方法。因此,您可以在其上调用println
方法,该方法返回void
。 this.getServletConfig().getInitParameter("defaultUser")
制作
一旦你理解了链接方法的调用,你就会感觉很完美。在
这种情况,你是:
Servlet
ServletConfig
String
对象上的getInitParameter
方法获取返回的ServletConfig
值答案 1 :(得分:1)
两者都是不同的情况。
第一种情况,System
类中的out
is 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