我在 Java 代码中使用了以下语句,我惊讶地发现它实际上可以编译:
ResponseEntity<byte[]> responseEntity = restTemplate.getForEntity(url.toString(), byte[].class, params);
文档中此方法的签名是:
ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> urlVariables)
我的印象是你不能在 Java 的泛型中使用基元。如果是这样,这是如何运作的?这本质上是幕后发生的其他事情的语法糖吗?我(很可能是错误的)猜测是编译器将 byte[]
转换为 Array
并以某种方式处理它。我想知道是否有人可以向我解释这是如何以及为什么有效的。
最佳答案
我猜,这是因为数组实际上是Java中的对象(引用类型),它们是Object
的直接子类型。因此,泛型对它们的作用就像对任何 Java 引用类型一样。
关于java - 有人能解释一下 Java 中泛型中原始类型的使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506876/