java 父类如何在运行期动态获取子类类名
在java运行中父类动态的获取子类的类型,并获取子类的类名。不知道java支不支持这样的操作。...
在 java 运行中父类动态的获取子类的类型, 并获取子类的类名。 不知道java 支不支持这样的操作。
展开
展开全部
给你写了3个类:
A类:
package cn.test;
public class A {
public void test(){
System.out.println(this.getClass());
System.out.println(this.getClass().getSimpleName());
System.out.println(this.getClass().getName());
}
}
B类:
package cn.test;
public class B extends A{
}
Test类:
package cn.test;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
B b = new B();
b.test();
}
}
结果:
class cn.test.B
B
cn.test.B
你要知道,在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来时的那个类型的实例对象,所以在父类中你可以中this获取到子类的信息!
不止一层继承关系时,你可以根据下面:
A类:
package cn.test;
public class A {
public void test(){
System.out.println(this.getClass());
System.out.println(this.getClass().getSimpleName());
System.out.println(this.getClass().getName());
System.out.println(this.getClass().getSuperclass());
System.out.println(this.getClass().getSuperclass().getSimpleName());
System.out.println(this.getClass().getSuperclass().getName());
}
}
B类:
package cn.test;
public class B extends A{
B(){
// System.out.println("B......");
}
}
C类:
package cn.test;
public class C extends B{
C(){
// System.out.println("C...........");
}
}
Test类:
package cn.test;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
C c = new C();
c.test();
}
}
结果:
class cn.test.C
C
cn.test.C
class cn.test.B
B
cn.test.B
展开全部
在父类中设计一个获取类名的方法
protect String getName(){
return getClass().getSimpleName();
}
到时直接调用就可以获取子类类名了
protect String getName(){
return getClass().getSimpleName();
}
到时直接调用就可以获取子类类名了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-03-09
展开全部
所有类都有一个公共的父类,那就是java.lang.Object,看JDK表述: public class Object类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法 所以抽象类有父类啊,如果没有写继承某个父类,那他的父类就是java.lang.Object
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询