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」はすでにスコープで定義されていることです。
私が正しくリコール
あなたのQは正確ではありませんが、(1) 'C++'や 'c + = 1'はあなたのために' char'へのキャストを扱います(2)表示されないJava-charの代りに多くのものがありますが、_probably_ '(char)127' aka' \ u007F'だと思います。あなたが使用しているエディタに応じて、基礎となるコードを得ることができるかもしれませんし、Unixyシステムでは、SpigotがOracle Javaを使用している場合、ファイル上で 'od'または' xxd'などを使用します。 8)標準ライブラリにある['java.util.Base64' click doc](https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html)より簡単かもしれません –
@ dave_thompson_085ええ、私は今それが含まれていることに気付きました。このコードを使用している唯一の理由は、別のクラスがこのbase64デコーダに依存しているためです。私は統合されたバージョン(やはりここでは非常に基本的な知識)をどのように実装するのかはわかりません。 – AssassinsKeeper