gpt4 book ai didi

java - 泛型 - 困惑

转载 作者:行者123 更新时间:2023-12-02 07:59:41 28 4
gpt4 key购买 nike

public <X> X createData(int n)
{
int[] values = new int[n];
Random rand = new Random();
for(int i = 0; i < n; i++)
{
values[i] = rand.nextInt(100);
}
JOptionPane.showMessageDialog(null, values.length);
return (X )values;
}

您好,我拼凑了一个小方法来返回 int 数组作为泛型类型(我认为?)

重点是,我要调用一个用户方法,该方法将为我生成一些数据,然后我获取该数据并调用他们选择的方法。

问题是,当我调用此方法时,如何将泛型类型转换为其“正确”类型,以便它使用此数据调用该方法。

通常我的流程是

1)调用用户方法来获取他们的数据(反射)

2)使用这些数据来调用他们的其他方法(反射)

我在这里所做/尝试的事情是否可能,或者在使其成为通用返回类型的过程中,我会毁掉一切吗?

谢谢

最佳答案

如果您不想返回列表,那么我会通过定义供应商接口(interface)来实现,

public interface Supplier<T> extends Serializable {
public T get();
}

可以定义为,

public <X> List<X> createData(Supplier<X> datum, Integer length){
List<X> values = new ArrayList<X>();
for(int i = 0; i < length; i++)
{
values.add(datum.get());
}
JOptionPane.showMessageDialog(null, values.size());
return values;
}

并且可以用作,

List<Integer> ints = createData(new Supplier<Integer>() {
Random rand = new Random();

@Override
public Integer get() {
return rand.nextInt(100);
}
}, 10);

关于java - 泛型 - 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101910/

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