更新旧代码,但现在有前向声明错误
Updating old code, but it now has forward declaration errors
我还不是很精通Java,刚入门。然而,需要更新别人的工作以供我自己使用(当然是私下)。一旦我开始更新插件(这是专门针对 Spigot Minecraft 服务器的),我 运行 就会遇到大量草率的代码和很多很多错误。作为 Java 场景的新手,这个让我很困惑。
该代码用于 Base64 解码器。
private static final char[] map1 = new char[64];
static { int i = 0;
for (char c = 'A'; c <= 'Z'; c = (char)(c + '[=10=]1')) map1[(i++)] = c;
for (char c = 'a'; c <= 'z'; c = (char)(c + '[=10=]1')) map1[(i++)] = c;
for (char c = '0'; c <= '9'; c = (char)(c + '[=10=]1')) map1[(i++)] = c;
map1[(i++)] = '+';map1[(i++)] = '/';
map2 = new byte['<nonunicodechar>']; // It appears as a square in IntelliJ, assuming it's not unicode (see below)
for (int i = 0; i < map2.length; i++) map2[i] = -1;
for (int i = 0; i < 64; i++) { map2[map1[i]] = ((byte)i);
}
}
public static final byte[] map2;
抛出的问题是 map2 是非法的前向引用,并且 'i' 已经在范围内定义。
byte[''];
如下所示
如果我没记错的话,像这样的静态构造函数只会将自身插入到正常 class 初始化的顺序中。因此,在您的情况下,声明了 map1,然后静态代码块是 运行,然后声明了 map。
尝试将 map2 的声明移到静态代码块上方。
我还不是很精通Java,刚入门。然而,需要更新别人的工作以供我自己使用(当然是私下)。一旦我开始更新插件(这是专门针对 Spigot Minecraft 服务器的),我 运行 就会遇到大量草率的代码和很多很多错误。作为 Java 场景的新手,这个让我很困惑。
该代码用于 Base64 解码器。
private static final char[] map1 = new char[64];
static { int i = 0;
for (char c = 'A'; c <= 'Z'; c = (char)(c + '[=10=]1')) map1[(i++)] = c;
for (char c = 'a'; c <= 'z'; c = (char)(c + '[=10=]1')) map1[(i++)] = c;
for (char c = '0'; c <= '9'; c = (char)(c + '[=10=]1')) map1[(i++)] = c;
map1[(i++)] = '+';map1[(i++)] = '/';
map2 = new byte['<nonunicodechar>']; // It appears as a square in IntelliJ, assuming it's not unicode (see below)
for (int i = 0; i < map2.length; i++) map2[i] = -1;
for (int i = 0; i < 64; i++) { map2[map1[i]] = ((byte)i);
}
}
public static final byte[] map2;
抛出的问题是 map2 是非法的前向引用,并且 'i' 已经在范围内定义。
byte[''];
如下所示
如果我没记错的话,像这样的静态构造函数只会将自身插入到正常 class 初始化的顺序中。因此,在您的情况下,声明了 map1,然后静态代码块是 运行,然后声明了 map。
尝试将 map2 的声明移到静态代码块上方。