Qualcuno può spiegare a me,
perché il superamento di un metodo di riferimento non statico al metodo File::isHidden
è ok,
ma passando metodo di riferimento a un metodo non statico MyCass::mymethod
- mi dà un "Impossibile creare un riferimento statico al metodo non statico"?Metodo di riferimento. Non è possibile fare un riferimento statico per il metodo non statico
public static void main(String[] args) {
File[] files = new File("C:").listFiles(File::isHidden); // OK
test(MyCass::mymethod); // Cannot make a static reference to the non-static method
}
static interface FunctionalInterface{
boolean function(String file);
}
class MyCass{
boolean mymethod(String input){
return true;
}
}
// HELPER
public static void test(FunctionalInterface functionalInterface){}
Non è possibile istanziare 'MyClass' da un metodo' static' (come 'main') perché è una classe interna _non-static_. Dovresti dichiarare la classe come statica. Sto assumendo che il codice nell'esempio originale sia racchiuso all'interno di una classe. –