gpt4 book ai didi

类型安全返回泛型子类的 Java 方法

转载 作者:行者123 更新时间:2023-12-02 03:50:46 25 4
gpt4 key购买 nike

我使用以下代码从抽象类型(动物)列表中获取与给定类(狗、猫)的第一个匹配元素。还有另一种类型安全的方法吗?

// get the first matching animal from a list
public <T extends Animal>T get(Class<T> type) {
// get the animals somehow
List<Animal> animals = getList();
for(Animal animal : animals) {
if(type.isInstance(animal)) {
// this casting is safe
return (T)animal;
}
}
// if not found
return null;
}

// both Cat and Dog extends Animal
public void test() {
Dog dog = get(Dog.class); // ok
Cat cat = get(Dog.class); // ok, expected compiler error
}

(猫和狗扩展了动物)

最佳答案

我的代码出现编译器错误:

public void test() {
Dog dog = get(Dog.class); // ok
Cat cat = get(Dog.class); // compiler error
}

当它可以编译时我只能看到一种情况:

class Dog extends Cat {
}

关于类型安全返回泛型子类的 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400109/

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