【发布时间】:2022-01-10 16:13:52
【问题描述】:
我正在尝试使用 Java 为我的编码分配实现一个向量。我想将有关向量维度的信息放入其类型中,以使我的代码更安全。
我尝试将向量表示为int[n],但以下代码无法编译。
public static int[n] createVector(int n) {
return new int[n];
}
编译的输出:
src\Main.java:59: error: ']' expected
public static int[n] createVector(int n) {
^
src\Main.java:59: error: ';' expected
public static int[n] createVector(int n) {
^
src\Main.java:59: error: invalid method declaration; return type required
public static int[n] createVector(int n) {
^
3 errors
我认为问题在于java中所有的int数组都具有相同的类型,我无法对其进行专门化。
有没有办法在 Java 中做到这一点?
【问题讨论】:
-
不,在任何情况下都不能专门化 Java 数组。使用一个类。
-
另外,泛型不支持值,只支持类型。
-
它不是公共类型信息的一部分,但Java数组是 fixed length。
-
解释编译器错误:您不能将数组的 size 指定为其类型的一部分。 IE。
int[n]不是有效的return类型;int[]是。当您初始化一个数组时,您指定它的大小(所以return new int[n]很好,因为您正在创建一个)。 -
这段代码无法编译我并不感到惊讶。函数结果类型中的 int[n] 是什么?它必须是 int[]