【发布时间】:2023-04-10 09:24:02
【问题描述】:
我有一个调用其他几个方法的方法,这些方法有不同的返回类型,就像:
public void caller() {
String methodName = "call2";
Method[] methods = Called.class.getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals(methodName)) {
Object obj = method.invoke(null, null);
// then I want to cast obj to its real type, in called class the
// method may return a List or Map an so on
}
}
}
例如方法a返回植物,方法b返回动物,方法c返回石头,我需要将其转换为真实类型,这样我才能使用唯一性
【问题讨论】:
-
那有什么问题呢?
-
“将其转换为真实类型”是什么意思?它已经是它真正的类型了。如果你知道它的类型,你可以用
(List<Whatever>)之类的来投射它;如果你不这样做,那么无论如何你也无能为力。 -
您没有使用
getDeclaredMethod(...)的任何特殊原因? -
界面适合你吗?
-
@AnandSKumar 我想将它转换为它的真实类而不是声明类,就像
Animal animal = new Dog()我声明了一个动物但它确实是一只狗,所以我可以在 DOG 中使用方法而不是在 Animal 中如果我使用 instanceof 如果有很多动物狗猫猴子等等我应该如果...否则很多我想要一种自动投射的方式