如何在另一个方法之后调用该方法?

时间:2018-08-09 13:58:36

标签: java android methods

我想为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();

}

3 个答案:

答案 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();

Try it online.

MyClass现在是Singleton,它只有一个实例处于活动状态。我建议将MyClass重命名为MySingleton,将A()重命名为getInstance()(此外,如果要在多个线程中使用它并希望使其成为线程安全的,则可以在该方法中添加synchronized关键字。但是考虑到您在其中使用它,我想它是单线程的您的Android Activity类,它使用默认的UI线程。)

相关问题