Самый короткий ответ, который я могу дать:
Runnable
- это интерфейс в Java, представляющий тип, который определяет метод run
. Любой класс, который реализует этот интерфейс, должен обеспечить реализацию для run
. Runnable
s представляют задачи, которые должны выполняться другими частями вашей системы. Thread
является известным Runnable
.
Если у вас есть код, похожий на new InterfaceName() { //implementation }
, он называется анонимным классом. Задача анонимного класса - создать одноразовый класс, реализующий тип интерфейса. У этого класса нет имени, и поэтому мы никогда не сможем обратиться к нему снова. Он используется только здесь.
Не зная ничего о Swing, похоже, что SwingUtilities.invokeLater()
принимает Runnable
и ... что ж, я думаю, он вызывает его позже (насколько позже, вероятно, описано в JavaDocs) Но причина, по которой вы определяете run
здесь как просто другой вызов метода, заключается в том, что некоторый код внутри SwingUtilities
будет вызывать метод run
для этого Runnable
; действительно, все, что он может знать о любом Runnable
, - это то, что он определяет метод с сигнатурой public void run()
, потому что это единственный метод, определенный в интерфейсе Runnable
.
Ну, я думаю, это было не так уж и мало.