Как вернуть объект при инициализации переменной в Java? - PullRequest
0 голосов
/ 26 июня 2018

Есть ли способ объявить такие статические переменные в Java, с помощью которых я могу вернуть объект Java после их инициализации, например

Мы можем сделать это в Python, как это

schedule.every(10).minutes.do(job)

Где, позвонив каждому (10). минуты Я просто инициализирую переменную минут.

Можно ли делать такие вещи и в Java?

Примерно так:

Myclass.function().variable.anothorFunction();

EDIT:

Как и в случае методов, я могу легко сделать это в Java, как это.

public static MyClass function(){
      return new MyClass();
}

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

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

public class MyClass {

   public OtherClass variable;

   public MyClass function(){
       // do stuff

       return this;
   }
}

public class OtherClass {

    public void anotherFunction(){
        // do other stuff
    }
}

Который затем можно использовать так:

MyClass myObj = ...;

myObj.function().variable.anotherFunction();

Еще лучшим способом было бы вернуть непосредственно variable:

public OtherClass function(){
    // do stuff

    return variable;
}

Который, в свою очередь, может затем использоваться следующим образом:

myObj.function().anotherFunction();
0 голосов
/ 26 июня 2018

Сначала я предположил, что фрагмент кода python работает, потому что в python есть генераторы и выход . Какой Java не имеет. В Java метод возвращает одно значение и только одно значение. На платформе JVM ближе всего можно найти конструкцию loop / yield , предложенную Scala. Или, может быть, Java 8 Streams.

Но, учитывая комментарии, я внимательно посмотрел на ваш пример, приведя к этому модулю python . Все сводится к schedule.every(), возвращающему объект планировщика, который просто вызывал переданную ему функцию job, основываясь на продолжительности, передаваемой через «свободный» интерфейс.

Вы можете сделать очень похожую вещь в Java, где вы помещаете метод static в некоторый класс, который просто создает экземпляр некоторого класса Scheduler, который вы затем передаете, например, лямбда / методу.

Но, конечно, в Java также есть встроенные механизмы для этого, например, ScheduledExecutorService .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...