gpt4 book ai didi

java 类中的多个泛型类型

转载 作者:行者123 更新时间:2023-11-30 02:34:06 26 4
gpt4 key购买 nike

我是java新手,我想知道如何在java中更好地做到这一点,或者更简单,更干净,更容易,比如拥有多个泛型类型的东西

public class Item<T1, T2, T3, T4, T5, T6, T7, T8, T9>{
private T1 t1;
private T2 t2;
private T3 t3;
private T4 t4;
private T5 t5;
private T6 t6;
private T7 t7;
private T8 t8;
private T9 t9;

public Item(T1 t1){
this(t1, null, null, null, null, null, null, null, null);
}
public Item(T1 t1, T2 t2){
this(t1, t2, null, null, null, null, null, null, null);
}

public Item(T1 t1, T2 t2, T3 t3){
this(t1, t2, t3, null, null, null, null, null, null);
}

public Item(T1 t1, T2 t2, T3 t3, T4 t4){
this(t1, t2, t3, t4, null, null, null, null, null);
}
...

最佳答案

一些您可能会觉得有用的建议:

  1. 您遇到了“伸缩构造函数反模式”的情况。 builder design pattern是通常的补救措施。正如您提到的,您正在寻找一个简单的解决方案,我建议使用 lombok 注释来为您的类实现构建器:

    @Getter
    @Builder
    class Item<T1, T2, T3, T4, T5, T6, T7, T8, T9> {
    private T1 t1;
    private T2 t2;
    private T3 t3;
    private T4 t4;
    private T5 t5;
    private T6 t6;
    private T7 t7;
    private T8 t8;
    private T9 t9;
    }

    您必须像这样初始化一个Item:

    Item<String, Integer, Double, String, Long, Long, Long, Long, Long> item =
    Item.<String, Integer, Double, String, Long, Long, Long, Long, Long>builder()
    .t4("text").t2(42).t3(3.14159).build();

    不幸的是,类型信息是重复的。请注意,您可以跳过字段并以任何顺序初始化。对于多个构造函数来说,这将是大量工作。其他领域例如t1t5 将保留为空。

  2. 考虑采用 jOOL library 中的 Tuple9 。如果你看source code of Tuple9它并不比你的代码简单。这种方法的简单之处在于其他人代替你完成了实现。该库最多支持 Tuple16

关于java 类中的多个泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com