java - 如何在泛型类中设置随机值
问题描述
我尝试用随机值填充 ArrayLists。Arraylist 可以包含字符串、整数、双精度或字符。创建随机值工作正常,但我的问题是我无法编写我的 insertRandom 方法。它应该插入特定的数据类型(如 double、int 等)。我在下面描述了我希望我的 insertRandom 方法执行的操作。我收到警告“类型缓冲区中的方法插入(T)不适用于参数(int)。我用谷歌搜索但没有发现/不明白如何将我的值类型转换为 T 对象,或者如何检查(类似于“instanceof”所做的),我的 ArrayLists 包含哪些数据类型。我已经阅读了人们在构造函数中用作参数的类类型,但我不允许更改构造函数的参数列表。
public class Buffer <T> {
private ArrayList<T> list;
// constructor
public Buffer (int capacity) {
this.list = new ArrayList<T>();
}
// insert items to buffer
public void insert (T item) {
list.add(item);
}
// insert random values
public void insertRandom () {
check if ArrayList is of type String / Integer / Double
if (ArrayList is-of-type-String) {
insert("ThisString");
}
if (ArrayList is-of-type-Double) {
insert(3.4);
}
}
谢谢和最好的问候,帕特里克
解决方案
假设即使您使用泛型并且T是 Double,也无法向其添加String。这意味着没有必要检查类的类型。
Buffer<Double> bd = new Buffer(10);
bd.insert(22.9);
bd.insert("string"); // compiler error
我认为您在这里不需要泛型。您只需要一个Buffer<Object>
,因为根据您的要求,您需要添加字符串、整数、双精度或字符。所以你甚至不需要做类型检查。
就像是:
Buffer<Object> buff = new Buffer<Object>(10);
buff.insert(22.9);
buff.insert("");
buff.insert(13);
推荐阅读
- javascript - javascript 在我的客户端和我的服务器文件夹之间共享代码
- python - 熊猫数据框垂直合并
- pdf - XSLT 值——不显示新段落
- python - 我如何在 django 中为用户 auth_group
- python - 如何将 if 语句用于字典键并填充另一个字典?
- javascript - 如何写出 arr 中的每个值,这是一个字符串数组,每行一个项目
- c++ - 如何使用 CMake 创建包
- python - 如何以有效的方式将列数据添加为行?
- apache-kafka - 尝试使用可为空键模式发布记录时,Kafka REST 代理中的异常“正在注册的模式与早期模式不兼容”
- python-3.x - 我在 Python 上使用 Speech_recognition 包得到 [errno -9999] 意外主机错误