Pourquoi lors de l'utilisation d'une méthode d'instance dans la référence de méthode (::
) ne lance pas NullPointerException
si nous définissons l'instance Object sur null?Utilisation de la méthode d'instance dans java 8 :: reference de méthode avec null Objet
public class MethodReferenceTest {
public static void main(String...strings){
PredicateSample predicateSample = new PredicateSample();
Predicate<String> predicate = predicateSample::isNotEmpty;
// NullpointerException ???
predicateSample = null;
Arrays.asList("a","b","c",null)
.stream()
.filter(predicate)
.forEach(System.out::println);
}
static class PredicateSample{
public boolean isNotEmpty(String s){
return ((s!=null) && (!s.isEmpty()));
}
}
}
Il semble que predicateSample
ne puisse être retenue après la construction du prédicats?
Vous définissez la variable 'predicateSample' à' null'. Pourquoi pensez-vous qu'il devrait y avoir un NPE? – Flown
En interne java n'utilise pas cette référence pour appeler la méthode d'instance? –
La référence à votre ancien prédicatSample (avant qu'elle ne soit nulle) est déjà stockée dans le prédicat – mlecz