Как я могу вызвать метод после другого метода?

Я хочу разработать библиотеку с новой идеей для приложений 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();

}

Вы делаете именно то, что делали там, - цепляйте их, если разрешено. Или напишите функцию, которая вызывает A (), затем B (). Если вы имеете в виду нечто большее, вам нужно быть более ясным в том, о чем вы спрашиваете.

Gabe Sechan 09.08.2018 16:00

Вы имеете в виду, что хотите знать, что должен вернуть ваш первый метод, чтобы вызвать второй? Если это так, ответ: любой объект, у которого есть метод. Ваш вопрос - это путь к широкому

jhamon 09.08.2018 16:02

Я хочу показать метод только после вызова определенного метода, но если он написал Toast.show (); не показывать.

Taha Sami 09.08.2018 16:05

@jhamon да, я хочу это

Taha Sami 09.08.2018 16:06
stackoverflow.com/questions/21180269/…? Вы можете выполнить thing.a().b().c() только в том случае, если thing.a() возвращает некоторый объект с помощью метода b(), а затем этот метод b() затем возвращает объект с методом c() и т. д. thing.a().b() эквивалентен BThing bt = thing.a(); bt.b(), но не делает bt видимой переменной в коде.
zapl 09.08.2018 16:27
public static MyClass A(){ return A(); } Это вызовет StackOverflowError ..
Kevin Cruijssen 09.08.2018 16:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
111
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

То, что вы хотите, не имеет значения.
Важно то, как классы и методы работают в Java. Поскольку вы объявляете show() как static, единственный способ вызвать его:

MyClass.show();

Если вы удалите ключевое слово static, вы можете сделать это:

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

как это ответить на вопрос?

jhamon 09.08.2018 16:04

@jhamon OP спрашивает, как он может вызвать шоу после создания тоста, вы читали?

user8959091 09.08.2018 16:05

вы должны вызвать метод show после метода makeText (), но вы не можете использовать Toast.show (). , Это то, что я хочу, чтобы метод вызывал только после вызова определенного метода в моей библиотеке.

Taha Sami 09.08.2018 16:08

@TahaSami Это то, что делает этот код. Он готовит тосты и показывает их, когда они вам нужны.

user8959091 09.08.2018 16:10

@TahaSami см. Мой отредактированный ответ

user8959091 09.08.2018 16:17

Это пример, но у меня есть моя библиотека, например у меня есть класс Color внутри класса, там 2 метода A (); показать(); Если бы я написал Color.A (); будет отображаться, и если я написал Color.show (); будет отображаться, но я хочу, чтобы он написал Color.show (); теперь отображается, но если он написал Color.A (), тогда show будет отображаться следующим образом: Color.A (). show ();

Taha Sami 09.08.2018 16:18

Разместите свой код, чтобы мы перестали гадать, что вы хотите

jhamon 09.08.2018 16:21

@TahaSami Если вы хотите получить помощь, вы должны четко сформулировать свою проблему. В данном случае это не так. Отредактируйте свой вопрос, используя более точную формулировку и необходимый код.

user8959091 09.08.2018 16:24

Хорошо, я изменю свое участие Подождите 5 минут

Taha Sami 09.08.2018 16:26

Изменено вы можете увидеть сейчас

Taha Sami 09.08.2018 16:32

@TahaSami Так какое отношение все это имеет к Toast?

user8959091 09.08.2018 16:52

Проблема решилась наверху, спасибо за уделенное время :)

Taha Sami 09.08.2018 16:54
Ответ принят как подходящий

Сложно понять, чего вы хотите, но, возможно, это то, что вы ищете:

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.

может это то, что ты ищешь - давайте не будем публиковать догадки в качестве ответов. Попросите разъяснений, если вы не уверены
Tim 09.08.2018 16:37

да, я хочу вот так, но хочу, чтобы он написал myClass.show (); скажи ему ошибку

Taha Sami 09.08.2018 16:38

@TahaSami обновил ответ, чтобы генерировать исключение, если текст не установлен.

knutesten 09.08.2018 16:42

@knutesten Есть ли способ сделать так, чтобы он появлялся только после использования метода makeText?

Taha Sami 09.08.2018 16:47

@TahaSami Я не понял вашего вопроса. Что должно появиться только после вызова makeText?

knutesten 09.08.2018 16:51

@TahaSami Вы не хотите, чтобы метод show существовал до вызова makeText?

knutesten 09.08.2018 16:53

Теперь он работает, спасибо большое

Taha Sami 09.08.2018 16:53

@knutesten да я хочу это :)

Taha Sami 09.08.2018 16:55

Понятия не имею, зачем вам это нужно, но может быть что-то вроде этого:

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 Activity, который использует UI-поток по умолчанию.)

Другие вопросы по теме