有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

变量个数可变的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);

你能推荐一种更好的方法来存储泛型类型数据吗?因为我认为我的实现是错误的


共 (2) 个答案

  1. # 1 楼答案

    嗯。。。您可以将类设置为泛型,并按要使用的类型进行参数化。或者,您可以在代码中使用T1 t1s[]; T2 t2s[]; T3 t3s[],只需为每段数据保留变量,并理解一次只有一个活动

    但你真的是指数据吗?因为数据应该是字符串、JSON或XML之类的。在这种情况下,只需存储并传递它即可

    但你真的是说你想要任意数据类型的对象的数量不定吗?嗯,你到底要怎么编码呢返回的对象可以是任何类型,因此不能对其调用任何特定方法。你不知道类型是什么,因为它是完全动态的,所以你甚至不能用一堆instanceof语句来提取

    或者你所有的数据都有一个共同的基类,你只需要基类方法?完美,extend一个公共基类。这就是继承的意义

    tl;dr:你的设计很糟糕,Java就是为了禁止它。修好它

  2. # 2 楼答案

    我个人会选择ArrayList,因为它是动态的,但你可以用数组做同样的事情。你是说你不知道如何定义一个包含泛型类型的类吗?只需将其定义为包含任何对象/泛型类型的集合:

    ArrayList<Object> myList = new ArrayList<>();
    myList.add(new String("Some String"));
    myList.add(2);
    System.out.println(myList.get(0));
    System.out.println(myList.get(1));
    

    你真的可以在“myList”中添加任何类型的对象。这就是在Java中使用多态性的主要好处