tsd*_*sds 0 java static static-methods method-chaining
假设我有一个带有几个静态void方法的类,例如:
class MyClass {
public static void doJob() {
// ...
}
public static void doSmthElse() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
如何修改它来调用我的静态方法:
MyClass.doJob().doSmthElse().doJob();
Run Code Online (Sandbox Code Playgroud)
代替
MyClass.doJob();
MyClass.doSmthElse();
MyClass.doJob();
Run Code Online (Sandbox Code Playgroud)
我知道如何使用非静态方法(只返回这个),但如何使用静态字段?
好吧,你可以这样做:
// Horrible, don't do it!
class MyClass {
public static MyClass doJob() {
// ...
return null;
}
public static MyClass doSmthElse() {
// ...
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
此时您的代码将编译,因为Java允许访问静态方法"via"引用.你返回null的事实是无关紧要的,因为编译器只会查看表达式的编译时类型,MyClass.doJob()以便计算出doSmthElse()要调用的方法; 然后将调用静态方法而不检查返回值.
但请不要这样做 - 这是一个非常令人讨厌的代码味道,因为你的代码看起来正在做一件事,当它实际上做另一件事.
选项:
MyClass一个接一个地调用三个方法.