Bir yönteme bildirmediğim belirli bir izin verilen tür kümesiyle List<T>
'u nasıl geçirebilirim?Listede kullanım için Java'daki türleri kısıtlayın
E.g. Tamsayı, Boole ve String
için türlerini sınırla: Ben List<Object>
kullanırsanız O listede her şeyi koyabilirsiniz
// Pseudo code
public void method(List<Integer OR Boolean OR String> myList);
: Ben listesi kullanırsanız
public void method(List<Object> myList);
Ben Parent
tüm örneklerini koyabilirsiniz ve Bu listeye alt sınıfları:
public void method(List<Parent> myList);
Bu yeterli olurdu f Bu alt sınıfları bildiren bendim (AllowedTypeA extends Parent
). Ama kullanmak istediğim sınıfların sahibi olmadığımda ne yapabilirim (Integer
Parent
'u genişletemiyorum)?
Sen ekspres "veya" Java tip kısıtlamaları olamaz. Bu tür bir kısıtlamaya ihtiyaç duyacağınız hangi yöntemi uygulamaya çalıştığınızı anlatabilir misiniz? –
Generics muhtemelen yanlış bir çözümdür. Onlar "jenerik", yani isim olması gerekiyordu. Yalnızca belirli türlerini destekleyebiliyorsanız (veya türe özgü bir mantığa sahipseniz), muhtemelen her bir belirli tür için aşırı yüklenmiş yöntemler kullanmalısınız. – mellamokb
@mellamokb Bu durumda aşırı yüklenme işe yaramazsa da, 'List <...>' argümanlarının tümü 'List' e geçecektir, bu yüzden başka parametreler olmadığı sürece bir çakışma olacaktır (ya da daha sonra adı farklı olan, bu durumda aşırı yüklenme olmaz)). –