gpt4 book ai didi

java - 如何更改子类中字段的通用类型?

转载 作者:行者123 更新时间:2023-12-01 19:43:09 25 4
gpt4 key购买 nike

我有课,A :

import java.util.ArrayList;
import java.util.List;

public class A {

protected List<Object> objects;

public A() {
objects = new ArrayList<Object>();
}

public A(List<Object> objects) {
this.objects = objects;
}

public List<Object> getObjects() {
return objects;
}

public void addObject(Object o) {
getObjects().add(o);
}

}

我想用一个名为 B 的类对其进行子类化,但更改 objects字段到 List<Number> :

import java.util.List;

public class B extends A {

@Override
public List<Number> getObjects() {
return (List<Number>) super.getObjects();
}

@Override
public void addObject(Object o) {
getObjects().add((Number) o);
}
}

但是,这会引发编译器错误。我怎样才能正确地做到这一点?

最佳答案

向您的 A 类引入类型参数...

import java.util.ArrayList;
import java.util.List;

public class A<T> {

protected List<T> objects;

public A() {
objects = new ArrayList<T>();
}

public A(List<T> objects) {
this.objects = objects;
}

public List<T> getObjects() {
return objects;
}

public void addObject(T o) {
getObjects().add(o);
}

}

现在 B 实际上不需要重写这些方法...

public class B extends A<Number> {

}

关于java - 如何更改子类中字段的通用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54596607/

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