Явный вызов Runnable.run - PullRequest
       8

Явный вызов Runnable.run

0 голосов
/ 19 апреля 2010

Кто-то, кто работал над моим кодом до меня, создал какой-то метод и передал Runnable в качестве параметра, более вероятно:

void myMethod(Runnable runnable){ runnable.run(); }

Тогда вызов myMethod из main выглядит так:

public static void main(String args[]) 
{ try 
{ myMethod(new Runnable(){ public void run() { //do something...; }}); } 
catch (Throwable t) { } }

Итак, для предоставления параметра myMethod мне нужно создать экземпляр объекта (в данном случае анонимного) класса, реализующего Runnable.

У меня вопрос: нужно ли использовать Runnable в этом примере? Могу ли я использовать любой другой интерфейс? Я имею в виду, я могу создать новый интерфейс с помощью одного метода, т. Е.

interface MyInterface{ void doThis(); }

затем измените внешний вид myMethod: void myMethod(MyInterface myObject){ myObject.doThis(); }

И, конечно, клиент тоже:

public static void main(String args[]) { 
try { myMethod(new MyInterface (){ public void doThis() 
{ //do something...; }}); } 
catch (Throwable t) { } }

А может, что-то про Runnable?!

1 Ответ

5 голосов
/ 19 апреля 2010

Вы могли бы абсолютно изменить интерфейс, как вы предложили, но какой в ​​этом смысл? Какое преимущество это дает для предоставления экземпляра MyInterface, а не Runnable? Одним из преимуществ Runnable является то, что в будущем было бы проще сделать код многопоточным, поскольку большинство API-интерфейсов, выполняющих потоки (например, Executor ), работают с экземплярами Runnable.

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