Java'da bir sınıfın hangi sınıfları genişleteceğini nasıl belirleyebilirim?Java'da bir sınıfın başka bir sınıfı mı uzattığını nasıl belirlerim?
public class A{
}
public class B extends A{
}
public class C extends A{
}
public class D{
}
public class E extends B{
}
public class doSomething{
public void myFunc(Class cls){
//need to check that cls is a class which extends A
//i.e. B, C and E but not A or D
}
}
cls.getSuperClass()
neye ihtiyacım var?
Bu, önerilen en iyi çözümdür, ancak bunu yapmaya çalışanın bir "kod kokusu" olduğunu eklemeliyim. Martin Broadhurst'un önerdiği gibi bunu yapmanın daha iyi bir yolunu bulmak isteyebilirsiniz. –
@Justin: Ben de bunun farkındayım. Ne yazık ki, argüman 'Class' dır ve gereksinim A.class'ın kendisini kontrol etmemesi gerektiğini belirtir. En iyisi 'A' 'yi soyutlamak ve strateji modelini uygulamak olacaktır, fakat bu,' A 'argümanının bir' somut 'örneğini gerektirir,' Sınıf '. OP'nin tasarımının kalanını nasıl etkileyeceğinden emin değilim. Belki de OP'nin argüman olarak 'Class'ı seçmek için kendi geçerli nedenleri vardır. Daha iyi tasarım önerileri vermeden önce fonksiyonel gereksinimin daha fazla açıklığa kavuşturulması gerekmektedir. – BalusC
Bu, gerçek bir iş sistemi veya okul projesi için kullanılıyor mu? –