如果我有方法签名
public void myMethod(SuperClass s){
}
和SuperClass
有三个子类,在myMethod
中是否有任何方法我可以获取传入的子类的类名?
不确定它是否重要,但SuperClass是抽象的。
答案 0 :(得分:9)
在myMethod中是否有任何方法可以获取传入的子类的类名?
是的,使用getClass
method:
public void myMethod(SuperClass s){
System.out.println(s.getClass());
}
备注1:
然而,这听起来像是Bad Design™。
无论你想在myMethod
中做什么,都要考虑在SuperClass
中设置一个方法(提供一个有意义的默认实现,或者使其抽象以强制子类来实现该方法)并调用此方法您的方法中的s
:
public void myMethod(SuperClass s){
s.abstractMethod();
}
备注2:
如果myMethod
逻辑似乎与SuperClass
的目的无关,并且您不想将myMethod
代码放在此类中,请考虑实现{{3}而不是。