Java 8'den beri argümansız anyyöntemi kullanabilirsiniz ve tür argümanı derleyici tarafından çıkarılacaktır:
verify(bar).doStuff(any());
açıklama
Java 8'deki yeni şey , bir ifadenin hedef türünün , alt ifadelerinin tür parametrelerini çıkarmak için kullanılacağıdır. Java 8'den önce yalnızca type parametresi çıkarımı için kullanılan yöntemlerle ilgili argümanlar (çoğu zaman).
Bu durumda, parametre türü doStuff, hedef tür olacaktır any()ve dönüş değeri türü, any()bu bağımsız değişken türüyle eşleşecek şekilde seçilir.
Bu mekanizma, esas olarak lambda ifadelerini derleyebilmek için Java 8'de eklenmiştir, ancak genellikle tür çıkarımlarını geliştirir.
İlkel tipler
Bu ne yazık ki ilkel tiplerle çalışmaz:
public interface IBar {
void doPrimitiveStuff(int i);
}
verify(bar).doPrimitiveStuff(any()); // Compiles but throws NullPointerException
verify(bar).doPrimitiveStuff(anyInt()); // This is what you have to do instead
Sorun derleyici Integerdönüş değeri olarak çıkarım olacaktır any(). Mockito bunun farkında olmayacak (tür silme nedeniyle) ve referans türleri için varsayılan değeri döndürecektir null. Çalışma zamanı, intValuegeçmeden önce üzerinde yöntemi çağırarak dönüş değerini kutudan çıkarmaya çalışır doStuffve istisna atılır.
anyMetod sadece işe yarayacağından , Java 8'den beri sorunun çok dikkat çekmeyeceğini tahmin ederdim . Sadece işe yarayan şeyler için cevap aramazsınız!