【发布时间】:2015-12-25 23:25:42
【问题描述】:
我在网上看到的解决方案是有道理的;如果你知道变量的类型,那么你就知道它的值的类型。 Java 做到了这一点。但是,如果我有一个这样的继承类系统......
DynastyPQ (base class)
FirstPQ (inherited class)
并以这种方式创建对象...
DynastyPQ pq = new FirstPQ();
有没有办法获取 FirstPQ 的 type 以便我可以在强制转换中使用它,以便我可以访问该类的专有方法?也许类似于这个?
(typeof(pq's value)pq).exclusiveMethod()
【问题讨论】:
-
不,不是不使用反射(绕过类型安全)。这与您的代码不完全一致,但您可以这样做
if (pq instanceof FirstPQ) ((FirstPQ)pq).exclusiveMethod(); -
@Bohemian 可以使用访客。这可能超出了他的要求,但从技术上讲,您可以在不进行反射的情况下检查类型
-
试试 'getClass()' 方法