gpt4 book ai didi

java - 如何从接口(interface)数组列表中获取某个对象

转载 作者:行者123 更新时间:2023-11-29 06:45:35 26 4
gpt4 key购买 nike

大家好,我遇到了一个问题。假设我有一个接口(interface) Animal。然后我有实现它的类,例如 Dog、Cat、Goat。假设这些类中的每一个都有一个从接口(interface)获取的 update() 函数。

我有一个动物数组列表,其中包括所有不同种类的动物类(狗、猫、山羊)。如果给我一个字符串,上面写着“Goat”,我将如何搜索该数组列表并仅选择 Goat update() 函数,而忽略 Dog 和 Cat...

最佳答案

for ( Animal a : animals ) {
if ( a instanceof Goat ) {
a.update();
}
}

如果你真的只有字符串“Goat”继续你可以做这样的事情:

if ( a.getClass().getName().endsWith("Goat") ) {
//...

或者如果字符串与类名无关,您可以将字符串映射到类的实例:

Map<String, Class<? extends Animal>> map = new HashMap...
map.put("Goat", Goat.class);

//...
if ( map.get("Goat").isInstance(a) ) {
a.update();
}

在我看来Google's Guava是最好的选择:

 for ( Goat g : Iterables.filter(animals, Goat.class) ) {
g.update();
}

关于java - 如何从接口(interface)数组列表中获取某个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500889/

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