gpt4 book ai didi

java - 在 Java 中我可以有多个有界类型参数但可选

转载 作者:行者123 更新时间:2023-12-02 11:21:15 25 4
gpt4 key购买 nike

我遇到一种情况,我正在创建一个数据模型类,其中包含特定类所需的所有数据点。但是,根据类中的调用内容,它不需要所有变量。数据模型具有多个有界类型参数,但是如果没有使用所有参数,其中一些参数可以是可选的吗?

例如:

public class DataModel<OBJ extends Object, EXCEPT extends Exception, MODEL extends BaseModelClass> {
}

然后,当我实例化它时,我可能不需要模型并想做类似的事情:

DataModel<ClassA,RunTimeException,null> data = new DataModel<ClassA,RunTimeException,null>();

其中 ClassA 是一个已定义的类,它扩展了代码另一部分中的对象,而 BaseModel 是一个公司基本模型,具有一些非常常见的部分。

所以问题是,是否可以完成类似的操作,并使一些适用于未用于此类中特定子方法的字段的有界类型参数是可选的?

最佳答案

在声明泛型变量时,不能仅指定泛型类的某些参数化类型:这将导致编译错误。要么根据定义的边界指定泛型类的所有参数化类型并使其有效,要么应使用原始类型。

请注意,如果您不想定义更具体的类型,则可以声明与下限通配符相同的类型:

DataModel<ClassA,RunTimeException,BaseModelClass> data = new DataModel<>();

或者通配符,例如(如 Lexicore 提到的):

DataModel<ClassA,RunTimeException,?> data = new DataModel<>();

根据您的要求,我想补充一点,泛型并不是为了向类添加/删除新方法而设计的。这些旨在更精确地键入类的实例。此外,您在客户端类使用的类中定义的泛型越多,对于客户端使用起来可能会很麻烦。

关于java - 在 Java 中我可以有多个有界类型参数但可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49906467/

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