变量个数可变的java类
我需要一个可以存储和返回不同类型值的类。我无法定义自己的班级。 我发现唯一能满足我需求的课程是列表课程。 我从数据库表中检索值。 这是我的方法:
//the total number of these variables can vary. The same is true for their types;
int intValue = 1;
String stringValue = "text 1";
byte[] dataValue = new byte[4];
List row = new ArrayList();
row.add(intValue);
row.add(stringValue);
row.add(dataValue);
List rows = new ArrayList();
rows.add(row);
intValue = 6;
stringValue = "text 2";
dataValue = new byte[8];
row = new ArrayList();
row.add(intValue);
row.add(stringValue);
row.add(dataValue);
rows.add(row);
String text1 = (String) ((List)rows.get(0)).get(1);
String text2 = (String) ((List)rows.get(1)).get(1);
你能推荐一种更好的方法来存储泛型类型数据吗?因为我认为我的实现是错误的
# 1 楼答案
嗯。。。您可以将类设置为泛型,并按要使用的类型进行参数化。或者,您可以在代码中使用
T1 t1s[]; T2 t2s[]; T3 t3s[]
,只需为每段数据保留变量,并理解一次只有一个活动但你真的是指数据吗?因为数据应该是字符串、JSON或XML之类的。在这种情况下,只需存储该并传递它即可
但你真的是说你想要任意数据类型的对象的数量不定吗?嗯,你到底要怎么编码呢返回的对象可以是任何类型,因此不能对其调用任何特定方法。你不知道类型是什么,因为它是完全动态的,所以你甚至不能用一堆
instanceof
语句来提取或者你所有的数据都有一个共同的基类,你只需要基类方法?完美,
extend
一个公共基类。这就是继承的意义tl;dr:你的设计很糟糕,Java就是为了禁止它。修好它
# 2 楼答案
我个人会选择ArrayList,因为它是动态的,但你可以用数组做同样的事情。你是说你不知道如何定义一个包含泛型类型的类吗?只需将其定义为包含任何对象/泛型类型的集合:
你真的可以在“myList”中添加任何类型的对象。这就是在Java中使用多态性的主要好处