我想为Android应用程序开发一个具有新想法的库,但是我遇到了问题。如何在另一个方法之后调用该方法?
例如...
Toast.makeText(context, "", Toast.LENGTH_SHORT).show();
我的代码
MyClass类
public class MyClass {
public static MyClass A(){
return A();
}
public static void show(){
}
MainActivity类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//It's normal
MyClass.A();
//if he wrote like this I want tell him error
MyClass.show();
//I want like this
MyClass.A().show();
}
答案 0 :(得分:0)
您想要的与您无关。
重要的是Java中类和方法的工作方式。
由于您将show()
声明为static
,因此调用它的唯一方法是:
MyClass.show();
如果您删除静态关键字,则可以执行以下操作:
MyClass myClass = new MyClass();
myClass.show();
答案 1 :(得分:0)
很难理解您想要什么,但这也许正是您想要的:
public class Toast {
private String text = null;
public Toast makeText(final String text) {
this.text = text;
return this;
}
public void show() {
if (text == null) throw new IllegalStateException("Text must be set before you can call show.");
System.out.println(text);
}
public static void main(final String[] args) {
final Toast toast = new Toast();
toast.makeText("test").show();
final Toast toastError = new Toast();
toastError.show();
}
}
通过返回makeText方法中的对象实例,您可以随后调用show。
答案 2 :(得分:0)
不知道为什么要这么做,但也许像这样:
static class MyClass{
private static MyClass instance;
public static MyClass A(){
if(instance == null){
instance = new MyClass();
}
return instance;
}
public void show(){
// TODO: Do something
}
}
您现在可以这样称呼它:
MyClass.A().show();
MyClass
现在是Singleton,它只有一个实例处于活动状态。我建议将MyClass
重命名为MySingleton
,将A()
重命名为getInstance()
。 (此外,如果要在多个线程中使用它并希望使其成为线程安全的,则可以在该方法中添加synchronized
关键字。但是考虑到您在其中使用它,我想它是单线程的您的Android Activity类,它使用默认的UI线程。)