Jenerik Statik Yöntemler.Java - Bunun dönüş sınıfına dayalı bir genel tür algılar ve bu jenerik türde bir statik yöntemini çağıran bir yöntem yapmak mümkün olup olmadığını anlamaya çalışıyorlar
yani I2 sınıflar hem getInstances ve getAllInstances yöntemleri uygulamak oluşturmak görebilirsiniz. Daha sonra, genel bir sarıcıdan yöntemleri kullanmaya çalışıyorum. Süper sınıf yönteminin her zaman dönüş türünden bağımsız olarak çalıştırıldığı anlaşılmaktadır. Örneğin
,public class ParentClass {
public ParentClass(){}
public static <T extends ParentClass> T getInstance(){
return (T) new ParentClass();
}
public static <T extends ParentClass> List<T> getAllInstances(){
ArrayList<ParentClass> parents = new ArrayList<ParentClass>();
for(int i=0;i<5;i++){
parents.add(new ParentClass());
}
return (List<T>) parents;
}
}
SubclassA
public class SubclassA extends ParentClass{
public SubclassA(){}
@SuppressWarnings("unchecked")
public static SubclassA getInstance(){
return new SubclassA();
}
@SuppressWarnings("unchecked")
public static List<SubclassA> getAllInstances(){
ArrayList<SubclassA> parents = new ArrayList<SubclassA>();
for(int i=0;i<5;i++){
parents.add(new SubclassA());
}
return parents;
}
}
Sarıcı - problemi gösterir
public class Wrapper {
public Wrapper(){
// ... some other stuff
}
public <T extends ParentClass> T getInstance(){
return T.getInstance();
}
public <T extends ParentClass> List<T> getAllInstances(){
return T.getAllInstances();
}
public static void main(String... args){
Wrapper wrapper = new Wrapper();
SubclassA subclassA = wrapper.getInstance();
ParentClass parentClass = wrapper.getInstance();
System.out.println(subclassA.getClass().getName());
System.out.println(parentClass.getClass().getName());
}
}
aşağıdaki hatayı alıyorum Sarıcısını çalıştırırken:
EX "ana" java.lang.ClassCastException parçasında ception: ParentClass, Wrapper.main adresindeki SubclassA 'a dökülmez (Wrapper.java:20)
Bunu Java'da yapabilir miyim?
bir sınıfa statik yöntemi çağırmak ediyoruz .... burada bekliyoruz anlamıyorum, yürütüldüğünde. çağrıyı neden bir alt sınıfa devretmeli? ve hangisini belirlemek için? – Gab
Umarım, dönüş türünden çıkarım yaparak hangi alt sınıfa verileceğini belirlerdi. Şimdi anladığım kadarıyla statik yöntemleri geçersiz kılabilirsiniz. – user2294382