将对象向下转换为 java 中的引用

Downcasting Objects to references in java

我正在做作业,不懂向下转换。 例如,class 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;

如果 works/when 有可能,

  • 假设,您使用 Reference class 创建一个 Object class 实例(child class参考)
Object obj = new Reference();

这是向上转换。你可以做到,

  • 在这种情况下,您可以在没有任何 ClassCastException
  • 的情况下向下转换
Reference ref = (Reference) obj;
  • 但是当你不清楚的时候,它是否安全?这次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;
    }
  }
}

在main方法中,

public static void main (String [] args) {  
    Object _obj = new Reference();  
    Reference.method(_obj);  
    //downcast successfull
}