Ich versuche auf die Instanzen mit einer Methode einer Klasse innerhalb einer anderen Klasse zugreifen und versuchte, sie zu ändern. Aber es wirft mich den Fehler als "Kann nicht auf die lokale non-final Variable nextSourceOffset verweisen in einem umschließenden Bereich definiert. Und es gibt mir eine Lösung, um die Variable zu ändern Endgültig." Aber wenn ich es zum endgültigen ändern, Ich kann sie nicht erhöhen.Probleme beim Zugriff auf die Instanzen einer Klasse innerhalb einer anderen Klasse
Ich verwende den folgenden Code ein:
public String produce(String lastSourceOffset, final int maxBatchSize, BatchMaker batchMaker)
throws StageException {
long nextSourceOffset = 0;
if (lastSourceOffset != null) {
nextSourceOffset = Long.parseLong(lastSourceOffset);
}
final RtmClient client = new RtmClientBuilder(getEndPoint(), getAppKey()).setListener(new RtmClientAdapter() {
@Override
public void onEnterConnected(RtmClient client) {
}
}).build();
SubscriptionAdapter listener = new SubscriptionAdapter() {
@Override
public void onSubscriptionData(SubscriptionData data) {
int numRecords = 0;
for (AnyJson json : data.getMessages()) {
jsonString = json.toString();
Record record = getContext().createRecord("some-id::" + nextSourceOffset);
Map<String, Field> map = new HashMap<>();
map.put("fieldName", Field.create(jsonString));
record.set(Field.create(map));
batchMaker.addRecord(record);
++nextSourceOffset;
++numRecords;
}
}
};
Es wirft den Fehler bei:
Record record = getContext().createRecord("some-id::" + nextSourceOffset);//error
Map<String, Field> map = new HashMap<>();
map.put("fieldName", Field.create(jsonString));
record.set(Field.create(map));
batchMaker.addRecord(record);//error
++nextSourceOffset;//error
++numRecords;//error
Mögliches Duplikat [Kann nicht in einem umschließenden Rahmen, Zufallsverfahren Fehler definiert mit der nicht endgültigen lokalen Variable Taste beziehen] (https://stackoverflow.com/questions/32305839/cannot -refer-to-the-nicht-final-local-Variable-Schaltfläche-definiert-in-einschließenden-scop) –