gpt4 book ai didi

java - 无法将泛型数组直接分配给局部变量

转载 作者:行者123 更新时间:2023-12-01 19:52:09 25 4
gpt4 key购买 nike

考虑这段代码:

final public class Array<T> implements Iterable<T> {
private T[] array;
private int l;
private int h;
public Array(int L, int H) {
@SuppressWarnings("unchecked")
this.array = (T[]) (new Object[H- L+1]);
this.l = L;
this.h = H;
}
}

它无法在我的机器上编译并出现以下错误:

Array.java:21: error: illegal start of type
this.array = (T[]) (new Object[H- L+1]);
^
Array.java:21: error: ';' expected
this.array = (T[]) (new Object[H- L+1]);
^
2 errors

VSCode 中提供的语法检查器/linter 甚至会提示以下内容:

[Java] Syntax error, insert "enum Identifier" to complete EnumHeaderName
[Java] Syntax error, insert "EnumBody" to complete BlockStatements

@SupressWarnings语句之后。

但是当我将构造函数更改为:

final public class Array<T> implements Iterable<T> {
private T[] array;
private int l;
private int h;
public Array(int L, int H) {
@SuppressWarnings("unchecked")
final a = (T[]) (new Object[H- L+1]);
this.array = a;
this.l = L;
this.h = H;
}
}

它按预期工作。

<小时/>

我的问题是:

我不能将通用数组直接分配给我的本地字段,怎么办?这是编译器错误吗?

我在最新的 arch linux 安装上使用以下 java 版本。

$ java -showversion
openjdk version "1.8.0_172"
OpenJDK Runtime Environment (build 1.8.0_172-b11)
OpenJDK 64-Bit Server VM (build 25.172-b11, mixed mode)

最佳答案

语句@SuppressWarnings("unchecked")放错了地方。将其移至构造函数上方,如下所示:

@SuppressWarnings("unchecked")
public Array(int L, int H) {
this.array = (T[]) (new Object[H- L+1]);
this.l = L;
this.h = H;
}

关于java - 无法将泛型数组直接分配给局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011728/

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