In meinem Java 8-Code,Java Lambda Ausdruck Fehler
public ChangePersonsName(String email, final String password, final String wantedUsername, final String uuid, final long time, int latency, int[] requests, int[] proxyRequests) throws IOException {
final AtomicReference<Object> token = new AtomicReference<Object>();
final AtomicReference<ArrayList<?>> newHeaders = new AtomicReference<ArrayList<?>>();
new Thread(() -> {
boolean lock = true;
while (lock) {
if (time - System.currentTimeMillis() > 60000) continue;
Map<Header[], String> loginResults = null;
try {
loginResults = this.login(email, password, uuid);
}
catch (IOException e) {
e.printStackTrace();
}
String token = loginResults.entrySet().iterator().next().getValue();
Header[] headers = loginResults.entrySet().iterator().next().getKey();
newHeaders.set(new ArrayList<Object>());
for (Header header : headers) {
if (!header.toString().startsWith("Set-Cookie:")) continue;
((List<BasicHeader>)newHeaders.get()).add(new BasicHeader("Cookie", header.toString().split("Set-Cookie: ")[1]));
}
lock = false;
}
}
).start();
new Timer().schedule(new TimerTask(){
Sie werden bemerken, dass
String token = loginResults.entrySet().iterator().next().getValue();
einen Compiler-Fehler führt,
Lambda Ausdruck der lokalen Variablen-Token kann nicht neu deklarieren eine andere lokale Variable, die in einem umschließenden Bereich definiert ist.
Meine Frage ist, wie würde man gehen, dies zu beheben? Ich bin ziemlich neu in Java, ich sollte wahrscheinlich wissen, wie das zu beheben ist, aber ich nicht.
'final AtomicReference
* "Wie würde man das Problem lösen?" * Nennen Sie es etwas anderes. – Andreas
Mögliches Duplikat von [Variable ist bereits in Methode Lambda definiert] (http://stackoverflow.com/questions/22773003/variable-is-ready-defined-in-method-lambda) – AxelH