java - 为什么会出现“插入“SimpleName”以完成 ClassType”?
问题描述
当我调用第二个初始化方法时出现问题,但不是第一个。
我已经找了 30 分钟,找不到任何东西来修复这个错误。
final public class Matrix{
private final int M, N;//rows and columns
public final double[][] data;
public Matrix(int M, int N) {
this.M = M;
this.N = N;
data = new double[M][N];
}
public Matrix(double[][] data) {
M = data.length;
N = data[0].length;
this.data = new double[M][N];
for(int i = 0; i < this.M; i++) {
for(int j = 0; j < this.N; j++) {
this.data[i][j] = data[i][j];
}
}
}
private Matrix(Matrix A) {this(A.data); } // copy matrix
}
private Matrix m1;
m1 = new @Matrix({{1.0,2.0},{1.0,2.0}});
double[][] d;
d = new double[m1.data.length][m1.data[0].length];
for(int i = 0; i < m1.data.length; i++) {
for(int j = 0; j < m1.data[0].length; j++) {
d[i][j] = m1.data[i][j];
}
}
System.out.println(Arrays.deepToString(d));
它应该将矩阵打印为数组,但错误:
Syntax error, insert "SimpleName" to complete ClassType
Syntax error, insert "( )" to complete Expression
出现
解决方案
一方面,
m1 = new @Matrix({{1.0,2.0},{1.0,2.0}});
应该:
m1 = new Matrix(new double[][]{{1.0,2.0},{1.0,2.0}});
这个地方可能是导致您看到您所看到的堆栈跟踪的原因,因为(在此处ClassType
定义)的格式可以由注释引导。注释(在此处定义)可能由符号引导,所以我认为这就是编译器所抱怨的 - 启动 ClassType 但没有正确完成它。为了另一个,@
final public class Matrix{
应该可能(对于正确性来说不是必需的,但在风格上是一致的)是:
public final class Matrix{
确保
private Matrix m1;
被声明为一个字段。如果它是局部变量,请将private
修饰符带走。
进行这些更改后,我得到输出:
> java Main
[[1.0, 2.0], [1.0, 2.0]]
你可以在这里查看我的测试代码。
推荐阅读
- sql - 将 SQL Server 查询转换为 Postgres 查询
- peoplesoft - 使用 Peoplesoft 数据元素生成 HTML 格式的电子邮件
- python - 如何从字符串键定义python常量
- continuous-integration - Artifactory 旧工件清理 (AQL) 并保留最新 3 个版本
- mongodb - Mongo:在 v4.4 异常中删除集合
- angular - 如何在离子 5 中添加选择所有选项到离子选择
- html - 嵌套在 JSON 响应中的未知格式的 HTML
- python - 尽管使用线程,Python Multi camera FPS 还是很慢
- javascript - 基于数据库数据构建嵌套数组
- typescript - TypeScript:为什么我不能删除这种类型断言?