0
我寫了下面的代碼,我注意到在警告消息的區別:方法引用是否擺脫了可覆蓋的方法調用?
public abstract class Yielder<E> implements Iterator<E> {
private final Object lock = new Object();
private final Thread yieldThread;
private E element;
public Yielder() {
this.yieldThread = new Thread(this::getYields);
startThreads();
}
private void startThreads() {
yieldThread.start();
}
@Override
public boolean hasNext() {
//impl
}
@Override
public E next() {
//impl
}
protected void yield(final E yield) {
//impl
}
abstract protected void getYields();
}
public class IncrementingYielder extends Yielder<Integer> {
@Override
protected void getYields() {
int i = 0;
while (true) {
yield(i++);
}
}
}
當在Yielder<E>
構造,如果我寫:
this.yieldThread = new Thread(() -> getYields())
,我收到警告Overridable method call in constructor
。this.yieldThread = new Thread(this::getYields)
,然後一切都很好。
這裏真的有區別嗎?或者Netbeans 8.0 Beta未配置爲警告方法參考?