问题描述
我正在处理一项任务,我不理解沮丧。 例如,类 Reference.java 和我在一个传递对象的方法中。如果该对象是类型(不确定这是否是正确的词),则创建一个新的 Reference 对象。这是我现在所拥有的,但它不起作用。
public method(Object obj){
if( obj instanceof Reference){
Object obj = new Reference();
}
}
现在 Reference.java 的构造函数需要两个参数,我也不明白这在向下转换时到底是如何工作的。
解决方法
Object obj = new Reference();
这是一个向上的场景。
如果你想要低头,那就是,
Reference ref = (Reference) obj;
当它有效/可能时,
- 假设您使用 Reference 类(子类引用)创建了一个 Object 类实例
Object obj = new Reference();
这是一个向上的转变。你可以这样做,
- 在这种情况下,您可以不带任何ClassCastException
Reference ref = (Reference) obj;
- 但是当您不清楚时,Cast 是否安全?这一次
instanceof
可以帮助您。所以完整的工作代码应该是-
class Reference extends Object{ //not necessary extends Object class,but for
//clearification
...
public static void method(Object obj){
if(obj instanceof Reference){
Reference ref = (Reference) obj;
}
}
}
在主方法中,
public static void main (String [] args) {
Object _obj = new Reference();
Reference.method(_obj);
//downcast successfull
}