gpt4 book ai didi

Java - 将泛型限制为内置/不可变类型(整数、短整型等)?

转载 作者:行者123 更新时间:2023-12-01 08:02:04 25 4
gpt4 key购买 nike

我正在编写一个容器类,并且此代码的​​要求规定(A)我应该使用泛型,并且(B)我应该只允许它接受内置包装类(例如 Integer、Short、Double)等)。

也就是说,我希望能够使用以下内容:

MyContainer<Integer>
MyContainer<Double>

但是这种事情不应该被允许:

MyContainer<MyClass1>
MyContainer<MyClass2>
<小时/>

通过对这个主题的研究,我发现了以下内容:

public class MyContainer<T extends (???)>

这让我想知道:是否所有内置包装器都扩展了一个公共(public)类,我可以通过这种方式指定该公共(public)类以使其工作?

或者,有没有办法让泛型只接受定义的类列表?这可能是一个更好的选择,因为这样泛型类型就不会被扩展公共(public)接口(interface)的用户定义的类所欺骗,但我不确定是否可以做到这一点(?)。

最佳答案

Alternatively, is there any way to make a generic only accept a defined list of classes?

不,没有这样的功能。

泛型边界提供了对类型层次结构的限制。例如,对于内置数字类型,共同祖先是 Number。但您无法阻止任何人创建自己的 Number 子类并将其与您的容器类一起使用。

你对泛型不走运。考虑使用一个工厂,它为您关心的内置类型提供预构建的容器类型,并为任何其他类型抛出异常。

关于Java - 将泛型限制为内置/不可变类型(整数、短整型等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24684362/

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