【发布时间】:2014-01-26 02:19:09
【问题描述】:
给定一个接口、一个抽象类和一个具体类
interface Interface {
}
abstract class AbstractClass {
}
class C extends AbstractClass implements Interface {
}
我像这样实例化我的具体类C 的两个实例
Interface a = new C();
AbstractClass b = new C();
System.out.println(getObjectReferenceName(a));// return some.package.Interface
System.out.println(getObjectReferenceName(b));// return some.package.AbstractClass
/* 它返回对象引用的类名 */
String getObjectReferenceName(Object o){
// todo
return "class name";
}
如何获取引用类型的类名?
那是——
a 的对象引用是 some.package.Interface。
b 的对象引用是 some.package.AbstractClass。
【问题讨论】:
-
是
a和b字段,方法参数,局部变量,...? -
a 和 b 是参考变量。您可以使用 instanceof 运算符来检查引用类型。
-
@SaurabhSharma OP 想要变量的声明类型,而不是运行时类型。
-
请注意,当您真正想要的是“类型”时,您会一直提到“名称”。请将其称为“类型”,以免人们混淆!
-
你的
AbstractClass没有实现你的Interface,这是故意的吗?
标签: java types classname object-reference