Ich bin nicht sehr kompetent in Java, ich fange gerade erst an. Es entstand jedoch die Notwendigkeit, die Arbeit eines anderen für meine eigenen Zwecke zu aktualisieren (privat, natürlich). Als ich anfing, das Plugin zu aktualisieren (dies ist speziell für einen Spigot Minecraft Server), stieß ich auf eine Menge schlampigen Codes und viele, viele Fehler. Dieser hat mich als Neuling in der Java-Szene ratlos gemacht.Aktualisieren alten Code, aber es hat jetzt Vorwärtsdeklaration Fehler
Der Code ist für einen Base64-Decoder.
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;
Die Themen geworfen sind, dass map2 eine illegale Vorwärts-Referenz ist, und dass ‚i‘ ist bereits in ihrem Umfang definiert.
Was die byte[''];
sieht wie folgt aus
Nicht genau Ihre Q, aber: (1) 'C++' oder 'c + = 1' behandelt die Umwandlung in' char' für Sie (2) Das Feld wird normalerweise als Ersatz für nicht darstellbare Java-Zeichen und angezeigt so _could_ viele Dinge, aber ich würde wetten, es ist _probably_ '(char) 127' alias' \ u007F'; Je nachdem, welche (r) Editor (en) Sie verwenden, können Sie den zugrundeliegenden Code erhalten, oder auf einem Unixy-System "od" oder "xxd" oder ähnliches in der Datei verwenden (3), wenn Spigot Oracle Java, die aktuelle Version (8) hat ['java.util.Base64' click doc] (https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html) in der Standard-Bibliothek, die einfacher sein kann –
@ dave_thompson_085 Ja, ich habe bemerkt, dass es jetzt enthalten ist, und der einzige Grund, warum ich diesen Code verwende, ist, weil eine andere Klasse auf diesen base64-Decoder angewiesen ist. Ich bin mir nicht sicher, wie ich die integrierte Version (wiederum sehr grundlegendes Wissen) hier implementieren würde. – AssassinsKeeper