- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在网上看到的解决方案很有意义;如果你知道变量的类型,那么你就知道它的值的类型。 Java就是这样做的;但是,如果我有一个像这样的继承类系统......
DynastyPQ (base class)
FirstPQ (inherited class)
并以这种方式创建对象......
DynastyPQ pq = new FirstPQ();
有没有办法获取 FirstPQ 的类型,以便我可以在转换中使用它,以便我可以访问该类的独占方法?也许类似于此?
(typeof(pq's value)pq).exclusiveMethod()
最佳答案
您有几个选择。
instanceof
对于这些示例,我们将尝试查找此变量的类型:
Object obj = new TargetType();
我们要查看obj
引用的对象是否属于TargetType
类型。
反射
有几种方法可以做到这一点:
if(obj == TargetType.class) {
//do something
}
上面代码背后的想法是 getClass()
返回对用于实例化该对象的 Class
对象的引用。大家可以对比引用。
if(TargetType.class.isInstance(obj)) {
//do something
}
Class#isInstance
检查传递给方法的对象值是否是我们调用 isInstance
的类的实例。如果 obj
为 null,它将返回 false
,因此不需要进行 null 检查。这需要强制转换才能对对象执行操作。
实例
这个很简单:
if(obj instanceof TargetType) {
//do something
}
instanceof
是语言规范的一部分。如果 obj
为 null,则返回 false
。这需要强制转换才能对对象执行操作。
访问者模式
我已经在我的 other answers 中详细解释了这一点.您将负责处理 null
。您应该更深入地研究该模式,看看它是否适合您的情况,因为它可能有点矫枉过正。这不需要类型转换。
关于java - 如何获取值的类型(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34467278/
这个问题在这里已经有了答案: final keyword in method parameters [duplicate] (9 个回答) 关闭 8 年前。 在此示例中,声明 Object fina
我的目标:是通过我的函数更新字段获取选定值并使用函数输出值运行它。 问题:当我从列表中选择值时,它不会触发函数,也不会更新字段。 感谢您的帮助。 HTML 12 14 16 18 20 22 24
我有一本具有这种形式的字典: myDict = {'foo': bar, 'foobar baz': qux} 现在,我想拆分字典键中的空格,使其成为下一个键并获取值(重复)。 myDictRev1
vector a; vector b; int temp_holder; cout > temp_holder) a.push_back(temp_holder); cout > temp_h
Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿。当然,我
我正在使用 jquery ui 日期选择器来获取 fromDate 和 toDate 以下是from日期的代码 $("#from_date").datepicker({
我是一名优秀的程序员,十分优秀!