我有一个基类BASE和几个继承的类BASE_1,BASE_2 ,, BASE_3。我有代码BASE测试但是如何发现它指向的类:BASE_1,BASE_2还是BASE_3?
答案 0 :(得分:3)
我不清楚您在问什么,但您可以使用getClass()
方法和instanceof
运算符。
如果是
Base b = new Child1();
b.getClass();//will give you child1
答案 1 :(得分:3)
要查看特定对象的类名,可以使用:
test.getClass().getName();
但是你通常不应该关心,因为任何依赖于你所拥有的子类的功能都应该被实现为那些子类中的重写(“多态”)函数。
答案 2 :(得分:3)
BASE test = getSomeBase();
// method 1
System.out.println(test.getClass().getName()); // prints the classname
// method 2
if (test instanceof BASE_1) {
// test is a an instance of BASE_1
}
答案 3 :(得分:2)
您可以使用instanceof
检查特定类型,或使用.getClass()
来获取描述特定类的Class
对象:
Base test = getSomeBaseObject();
System.out.println("test is a " + test.getClass().getName());
if (test instanceof Base1) {
System.out.println("test is a Base1");
}