我想从我的接口对象中获取实现类的名称 — 有没有什么方法可以做到这一点?
我知道可以使用instanceof
检查实现对象,但在我的应用程序中,有近20至30个类实现了相同的接口以覆盖一个特定的方法。
我想弄清楚它将调用哪个特定的方法。
我想从我的接口对象中获取实现类的名称 — 有没有什么方法可以做到这一点?
我知道可以使用instanceof
检查实现对象,但在我的应用程序中,有近20至30个类实现了相同的接口以覆盖一个特定的方法。
我想弄清楚它将调用哪个特定的方法。
只需使用object.getClass()
- 它将返回实现您接口的运行时类:
public class Test {
public interface MyInterface { }
static class AClass implements MyInterface { }
public static void main(String[] args) {
MyInterface object = new AClass();
System.out.println(object.getClass());
}
}
getClass()
在对象上的调用就可以工作。public class SquaresProblem implements MyInterface {
public static void main(String[] args) {
MyInterface myi = new SquaresProblem();
System.out.println(myi.getClass()); // use getClass().getName() to get just the name
SomeOtherClass.printPassedClassname(myi);
}
@Override
public void someMethod() {
System.out.println("in SquaresProblem");
}
}
interface MyInterface {
public void someMethod();
}
class SomeOtherClass {
public static void printPassedClassname(MyInterface myi) {
System.out.println("SomeOtherClass : ");
System.out.println(myi.getClass()); // use getClass().getName() to get just the name
}
}
输出:
class SquaresProblem --> class name
SomeOtherClass :
class SquaresProblem --> class name
yourInstance.getClass().getName()
- Suresh Atta