Ben bir yöntem dahilinde böyle koduna sahip başlatıldı olmayabilirdi:nihai değişken
final TouchableSpan touchableSpan = new TouchableSpan() {
@Override
public void onClick(View widget) {
this.setPressed(true);
String extravar = touchableSpan.getMyVar();
}
bu hat String extravar = touchableSpan.getMyVar();
ben değişken touchableSpan
başlatılmamış olabileceğini bir uyarı olsun. Neden var
Bu uyarı, final
değiştiricisini eklediğimde ortaya çıktı. variable is access from inner class, needs to be declared final
'dan önce.
"TouchableSpan" öğesinin bir kurucu olan 'TouchableSpan() {this.onClick (null);}} veya benzeri olduğunu varsayalım. – immibis
Bu kesinlikle bazı "kötü koku" vardır. Eğer 'onClick() 'yönteminiz gerçekten de TouchableSpan sınıfının ** dışındaki bir öğeye ** erişmesi gerekiyorsa; o zaman örneğin "dış eleman" ı bir kurucu aracılığıyla sağlamanız gerekir. Kod, o sınıfın koduyla yeni bir TouchableSpan nesnesi yaratan kısmı ... ... son derece birleştiriyor. Bunu yapma! – GhostCat
@ Jägermeister, evet, this.getMyVar() işlevini '@ Tagir' olarak önereceğim. –