gpt4 book ai didi

java - 使用泛型在方法调用时从父级转换为子级

转载 作者:行者123 更新时间:2023-11-29 04:59:38 25 4
gpt4 key购买 nike

我一直在尝试找到一种方法来执行以下操作,但不确定是否可行。假设我有一个父类(super class)和两个具有完全不同且独立字段的子类(类 Field1Field2):

public abstract class Parent {
private String field;
// getters and setters
}

public class Child1 extends Parent {
private Field1 field1;
}

public class Child2 extends Parent {
private Field2 field2;
}

现在,我有一个接口(interface),其中包含一个接受 Parent 类的方法,以及实现该接口(interface)的两个实现 Impl1Impl2,但我希望他们接受子类(class):

public interface IMethod {
void method(Parent parent);
}

public class Impl1 implements IMethod {
@Override
public void method(Child1 child1) { // like this won't compile
// implementation using Field1
}
}

public class Impl2 implements IMethod {
@Override
public void method(Child2 child2) { // like this won't compile
// implementation using Field2
}
}

我一直在尝试以不同的方式使用泛型来实现这一点,因此我避免了从 Parent 到方法实现中的子类的强制转换。问题是我对泛型还不是很熟悉,所以不确定这是否可行或者没有解决方案。

最佳答案

你需要改变

public interface IMethod {
void method(Parent parent);
}

public interface IMethod<T extends Parent>{
void method(T parent);
}

和你的实现

public class Impl1 implements IMethod<Child1> {
@Override
public void method(Child1 child1) {
// implementation using Field1
}
}

public class Impl2 implements IMethod<Child2> {
@Override
public void method(Child2 child2) {
// implementation using Field2
}
}

关于java - 使用泛型在方法调用时从父级转换为子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com