将对父项的引用转换为对子项的引用
Convert Reference to Parent to Reference to Child
我有一个对象类型的ArrayList,我们称它为'Parent'。我需要使用一个方法 (.method1()),它只能在它的子对象中使用,另一个对象叫做 'Child'。我 100% 确定对我试图转换的 'Parent' 实例的每个引用也是 Child 的实例。有没有办法转换参考? (java 的新手)
我正在尝试做的事情的表示:
Child Extends Parent{...}
public void randomMethod(ArrayList<Parent> a){
for(Child c: a){
c.method1() //method1 is a method of Child but not parent using attributes Parents do not have
}
}
注意:请不要告诉我更改我预先存在的代码,我正在使用骨架代码。
这仅在 List<Parent>
也是 List<Child>
时有效。如果是这种情况,那么您必须将每个 Parent 实例转换为 Child。
public void randomMethod(ArrayList<Parent> a){
for(Parent p: a){
((Child)p).method1() //method1 is a method of Child but not parent using attributes Parents do not have
}
}
如果 Parent 实例不是 class 的 Child superTypes
,那么上述将抛出 class 转换异常。
这是一个例子。
class Parent {
}
class Child extends Parent {
String msg;
public Child(String msg) {
this.msg = msg;
}
public String childMethod() {
return msg;
}
}
List<Parent> list =
List.of(new Child("I am the first child"),
new Child("I am the second child"));
for (Parent p : list) {
String s = ((Child) p).childMethod();
System.out.println(s);
}
打印
I am the first child
I am the second child
我有一个对象类型的ArrayList,我们称它为'Parent'。我需要使用一个方法 (.method1()),它只能在它的子对象中使用,另一个对象叫做 'Child'。我 100% 确定对我试图转换的 'Parent' 实例的每个引用也是 Child 的实例。有没有办法转换参考? (java 的新手)
我正在尝试做的事情的表示:
Child Extends Parent{...}
public void randomMethod(ArrayList<Parent> a){
for(Child c: a){
c.method1() //method1 is a method of Child but not parent using attributes Parents do not have
}
}
注意:请不要告诉我更改我预先存在的代码,我正在使用骨架代码。
这仅在 List<Parent>
也是 List<Child>
时有效。如果是这种情况,那么您必须将每个 Parent 实例转换为 Child。
public void randomMethod(ArrayList<Parent> a){
for(Parent p: a){
((Child)p).method1() //method1 is a method of Child but not parent using attributes Parents do not have
}
}
如果 Parent 实例不是 class 的 Child superTypes
,那么上述将抛出 class 转换异常。
这是一个例子。
class Parent {
}
class Child extends Parent {
String msg;
public Child(String msg) {
this.msg = msg;
}
public String childMethod() {
return msg;
}
}
List<Parent> list =
List.of(new Child("I am the first child"),
new Child("I am the second child"));
for (Parent p : list) {
String s = ((Child) p).childMethod();
System.out.println(s);
}
打印
I am the first child
I am the second child