Строки:
Runnable runnable = Demo::new;
runnable.run();
эквивалентны:
Runnable runnable = new Runnable() {
@Override
public void run() {
new Demo(); // Creates an instance of the Demo class, and nothing more
}
};
runnable.run();
В то же время вы намеревались вызвать метод run
из класса Demo
через ссылку на метод. Поэтому, я полагаю, вы имели в виду следующее:
Runnable runnable = new Demo()::run;
runnable.run();
// But, this is a little bit redundant...
Вышеуказанный код эквивалентен:
Demo demo = new Demo();
Runnable runnable = new Runnable() {
@Override
public void run() {
demo.run();
}
};
runnable.run();
P.S. Здесь вам не нужна ссылка на метод, поэтому просто напишите:
new Demo().run();
Или:
Runnable demo = new Demo();
demo.run();