java - 更新旧代码,但现在有前向声明错误

标签 java server base64 minecraft decoder

我对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 + '\001')) map1[(i++)] = c;
    for (char c = 'a'; c <= 'z'; c = (char)(c + '\001')) map1[(i++)] = c;
    for (char c = '0'; c <= '9'; c = (char)(c + '\001')) 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['']; 如下所示

Code

最佳答案

如果我没记错的话,像这样的静态构造函数只会将其自身插入到正常类初始化的顺序中。因此,在您的情况下,声明了map1,然后运行静态代码块,然后声明map。

尝试将map2的声明移到静态代码块上方。

关于java - 更新旧代码,但现在有前向声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38650521/

相关文章:

java - Bukkit/龙头 : Plugin - Custom GUI Shop error

php - 如何处理发布到 PHP 的非 base64 编码的图像?

php - AJAX Posts 8 bit Clean?/与 Base64 的关系/替代方案?/它在哪里?

java - google appengine - 时区已更改

java - Hibernate 和 PostgreSQL - 检查 setParameterList 中传递的集合是否为空

python - 100万用户的系统,如何用Python做定时任务?

node.js - 浏览器重复创建与 websocket 的连接 - socket.io

laravel - Auth Guard [api] 未定义

java - Eclipse 自动格式化和 checkstyle

java - 将来自 servlet 的请求记录到数据库的最佳方式?