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

Java 如何在另一个方法之后调用该方法?,java,android,methods,Java,Android,Methods,我想为Android应用程序开发一个具有新想法的库,但我遇到了问题。如何在另一个方法之后调用该方法 例如 Toast.makeText(context, "", Toast.LENGTH_SHORT).show(); 我的密码 我的班级 public class MyClass { public static MyClass A(){ return A(); } public static void show(){ } 主要活动类 @Ov

我想为Android应用程序开发一个具有新想法的库,但我遇到了问题。如何在另一个方法之后调用该方法

例如

Toast.makeText(context, "", Toast.LENGTH_SHORT).show();
我的密码

我的班级

public class MyClass {

    public static MyClass A(){
        return A();
    }

    public static void show(){

    }
主要活动类

@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();

}

你想要什么是无关紧要的
重要的是类和方法在Java中的工作方式。
既然您将
show()
声明为
static
,那么调用它的唯一方法就是:

MyClass.show();
   MyClass myClass = new MyClass();
   myClass.show();
如果删除静态关键字,则可以执行以下操作:

MyClass.show();
   MyClass myClass = new MyClass();
   myClass.show();

理解你想要什么有点困难,但也许这就是你想要的:

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。

不知道为什么需要它,但可能是这样的:

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();
现在你可以这样称呼它:

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
现在是一个,它只有一个活动实例。我建议将
MyClass
重命名为
MySingleton
并将
A()
重命名为
getInstance()
。(另外,如果您在多个线程中使用它,并且希望使其线程安全,您可以将
synchronized
关键字添加到该方法中。但我猜,考虑到您在Android活动类中使用它,它使用默认的UI线程,它是单线程的。)

您只需执行您在那里所做的操作—如果允许,将它们链接起来。或者编写一个调用a()然后调用B()的函数。如果你的意思不止这些,你需要更清楚地知道你在问什么。你的意思是你想知道你的第一个方法应该返回什么来调用第二个方法吗?如果是这样的话,答案是:任何一种有方法的对象。我只想在调用某个特定方法后显示该方法,但如果他编写了Toast.show();不显示。@jhamon是的,我想要
公共静态MyClass A(){return A();}
这将导致堆栈溢出错误..这如何回答问题?@jhamon OP问他在创建toast后如何调用show,你读过了吗?你应该在makeText()方法之后调用show方法,但你不能使用toast.show(),这就是我希望该方法仅在调用我的library@TahaSami这就是代码的作用。它会准备祝酒词,并在您需要时显示出来。发布您的代码,这样我们就可以停止猜测您想要什么了。也许这就是您正在寻找的-我们不要将猜测作为答案发布。如果你不回答,请要求澄清是的,我想这样,但我想知道他是否编写了myClass.show();告诉他error@TahaSami更新了答案,以便在未设置文本时引发异常。@knutesten是否有办法使其仅在使用makeText方法后显示?@TahaSami我不明白您的问题。调用makeText后应该只显示什么?