gpt4 book ai didi

java - 如何使用继承的类对象

转载 作者:行者123 更新时间:2023-12-02 10:44:23 25 4
gpt4 key购买 nike

我有一个父类,Parent ,有两个子类,AB 。 A有一个类,Wrapper ,包含一个接口(interface) Function ,它允许程序员为每个包装器指定特定的方法。

Wrapper包含变量 Class<Parent> inputClassClass<Parent> outputClass ,指定输入和输出类型。 Wrapper应该将 A 映射到 A 或 B,或者将 B 映射到 A 或 B。

当我尝试调用包装器构造函数 Wrapper(Class<Parent> input, Class<Parent> output, Function func) 时,出现了问题。 Eclipse 给我一个错误,试图输入 A.classB.classinputoutput 。鉴于 A 和 B 是 Parent 的子类,我认为它们能够传递到构造函数中。我该如何实现这个?

public class Parent {
protected int value;
public void setValue(int x){ value = x; }
public int getValue(){ return value; }
}


public class A extends Parent{
public A(){ setValue(1); }
public A(B b){ setValue( b.getValue()); }
}

public class B extends Parent{
public B(){ setValue(2); }
public B(A a){ setValue(a.getValue()); }
}


public class Wrapper{
protected Class<? extends Parent> inputClass;
protected Class<? extends Parent> outputClass;
protected interface Function{
public Parent of(Parent input);
}
protected Function function;
public Wrapper(Class<? extends Parent> in, Class<? extends Parent> out, Function func) {
inputClass = in;
outputClass = out;
function = func;
}

public Parent of(Parent input){
try{
Parent output = function.of( inputClass.getConstructor( input.getClass() ).newInstance(input) );
return outputClass.getConstructor( output.getClass() ).newInstance( output );
} catch(Exception e){
e.printStackTrace();
return null;
}
}
}

public class Main {
public static void main(String[] args){
///Error occurs here. Can't take A.class in for Parent.class
Wrapper wrapper = new Wrapper(A.class,B.class, new Function(){
@Override
public Parent of(Parent p) {
return null;
}
});
}
}

最佳答案

问题不是来自 A.classB.class ,但是从界面Function嵌套在 Wrapper 内类(class)。我需要写new Wrapper.Function在 main 的构造函数中。

关于java - 如何使用继承的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52695136/

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