【问题标题】:How can I reach to the two values added and created with generic class list如何使用通用类列表添加和创建两个值
【发布时间】:2022-01-25 03:45:28
【问题描述】:

如何访问使用通用类列表添加和创建的两个值?我创建了一个具有 2 个变量 (tag_id) 和 (rssi) 的泛型类。

通用类

@Getter
@Setter
@Data
public class Test<T>{

    public int tag_id;

    public float rssi;

    public List<T> list = new ArrayList<>();

    public Test() {
    
    }
}

RFID 类

@Getter
@Setter
@Data
public class RFID extends Test {
    public RFID(float rssi) {
        this.rssi = rssi;
    }

标签类

@Getter
@Setter
@Data
public class Tag extends Test {

    public Tag(int tag_id) {
        this.tag_id = tag_id;
    }

主类

public static void main(String[] args) {
    List<Test> testlist = new ArrayList<>();
            testlist.add(new Tag(1));
            testlist.add(new RFID(1));
    }

我想这样输出:[1(tag_id), [1.0,2.0,3.0](rssi)]。我可以达到这两个值,但不是嵌套类型,我可以将值添加到我的测试列表,但我想输出嵌套类型。

【问题讨论】:

  • 嵌套类型是什么意思?你的问题不清楚。更多细节
  • 泛型实际上并不存在,它们只是用于编译检查。在您的运行时,您的实例真正属于它们的原始对象类型,因此您可以使用instanceof,或者只是在每个类中覆盖toString()

标签: java arrays list generics nested


【解决方案1】:

如果您想为单个标签添加多个 RFID,请将您的代码编写为:

public static void main(String[] args) {
    SpringApplication.run(Demo3Application.class, args);

    List<Test> testlist = new ArrayList<>();
    testlist.add(new Tag(1));
    testlist.get(0).list.add(new RFID(1));
    testlist.get(0).list.add(new RFID(66));

    testlist.add(new Tag(2));
    testlist.get(1).list.add(new RFID(2));
    testlist.get(1).list.add(new RFID(77));

    for (Test test: testlist) {
        System.out.println("[" + test.getTag_id() + ", [" + test.getList().stream().map(i -> String.valueOf(i)).collect(Collectors.joining(", ")) + "]]");
    }
}

【讨论】:

  • 输出是; [1, [RFID(), RFID()]] [2, [RFID(), RFID()]] 我可以看到这样的输出吗? [1, [RFID(1), RFID(66)]] [2, [RFID(2), RFID(77)]]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 2021-01-01
  • 2020-03-05
  • 2011-12-28
相关资源
最近更新 更多