gpt4 book ai didi

java - 如何向参数化方法提供参数,直到运行时我才知道其类型?

转载 作者:行者123 更新时间:2023-11-30 03:35:20 25 4
gpt4 key购买 nike

在此代码片段中:

...
Executor<? extends Data> executor = someOtherThing.getExecutor();
Data data = someOtherOtherThing.getData();

executor.execute(data);
...

interface Executor<T extends Data> {
void execute(T data);
}

因此,执行器数据都是从其他地方进来的,直到运行时我才知道它们的实际类型,但我确实知道data 的类型与 executor 的参数化类型 T 相同。

我假设需要某种类型的转换来允许executor.execute(data),但我不知道要转换到什么,或者如何做,而不知道确切的类型直到运行时。我怎样才能做到这一点?

谢谢!

最佳答案

but I do know that the type of data is the same as executor's parameterised type, T

如果你确定,你可以写:

Executor<? extends Data> executor = someOtherThing.getExecutor();
Data data = someOtherOtherThing.getData();

Executor<Data> executorData = (Executor<Data>)executor;

executorData.execute(data);

它适用于

List<? extends Number> list = new ArrayList<>();
List<Number> listNumbers = (List<Number>) list; //Unchecked cast: 'java.util.List<capture<? extends java.lang.Number>>' to 'java.util.List<java.lang.Number>
listNumbers.add(new Integer(1));

关于java - 如何向参数化方法提供参数,直到运行时我才知道其类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087737/

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