将对象向下转换为 java

问题描述

我正在处理一项任务,我不理解沮丧。 例如,类 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
}