将对象向下转换为 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
}
我正在做作业,不懂向下转换。 例如,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
}