作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!