En Java, ¿cómo hago para determinar qué clases abarca una clase?¿Cómo puedo determinar si una clase amplía otra clase en Java?
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
}
}
would cls.getSuperClass()
hacer lo que necesito?
Esta es de lejos la mejor solución sugerida, pero me gustaría añadir que tratar de hacer esto es un poco "olor a código". Es posible que desee tratar de encontrar una mejor manera de hacerlo, como sugiere Martin Broadhurst. –
@Justin: me doy cuenta de eso también. Desafortunadamente, el argumento es 'Clase 'y el requisito establece que''Aclase' en sí no debería pasar el cheque. Lo mejor sería hacer que 'A' sea abstracto y aplicar el patrón de estrategia, pero eso requiere una instancia * concreta * de 'A' como argumento, no 'Clase '. No estoy seguro de cómo afectaría eso al remanente del diseño de OP. Tal vez el OP tiene sus propias razones válidas para elegir 'Clase' como argumento. El requisito funcional tiene que aclararse más antes de que podamos dar mejores sugerencias de diseño. – BalusC
¿Se está utilizando esto para un sistema de negocios real o un proyecto escolar? –