Java 1.1引入了Class#getComponentType(),其中

返回表示数组组件类型的{@code Class}. 如果此类不表示数组类,则此方法返回NULL.

从Java 12开始,还有Class#componentType(),这在语义上是等价的(也在其文档中指定).

如果此{@code Class}描述数组类型,则返回其组件类型,否则返回{@code空}.

...

相当于{@link Class#getComponentType()}.

我的问题:

  • 我应该用哪一个呢?在Java 21中,它们都不会被弃用.
  • 这一切为什么要发生?该函数如此简单,以至于似乎没有实现特定的好处.

推荐答案

我们可以发现,12版本不仅引入了Class#componentType(),还引入了Class#descriptorString()Class#arrayType(),这反映了有关方法名称的新约定.因此,旧的Class#getComponentType()可能会被弃用,并在以后删除以处理复制.

综上所述,如果代码肯定不能在早于12版本的JRE上运行,那么使用新方法是合理的.

Java相关问答推荐

Saxon 9:如何从Java扩展函数中的net.sf.saxon.expr. XPathContent中获取声明的变量

使用包私有构造函数强制子类Java类

从技术上讲,OPC UA客户端是否可以通过转发代理将请求通过 tunel 发送到OPC UA服务器?

使用动态ID从json获取详细信息的Jolt规范

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

通过合并Akka Streams中的多个慢源保持订购

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

安装Java Jar应用程序的Install4j遇到ClassNotFoundException的运行时错误

为什么在maven中,getLast方法不适用于List?

JDK 21-为什么线程局部随机S nextInt不直接用Super.nextInt实现?

如何对多个字段进行分组和排序?

为什么我的回收视图会显示重复的列表?

在学习Spring时,通过构造函数参数0表达了不满意的依赖关系

如何创建模块信息类文件并将其添加到JAR中?

我如何为我的Java抵押贷款代码执行加薪操作(&Q)

如何在Java中的重写方法参数中强制(Enum)接口实现?

无法在Java中获取ElastiCache的AWS CloudWatch指标

Java中的一个错误';s stdlib SocksSocketImpl?

如何判断元素计数并在流的中间抛出异常?

SonarQube在合并升级到java17后对旧代码提出错误