Bu hata raporu tarafından tetiklenen AVRO-1814 Sorunu, bu etkiyi temel alan Java'daki bu örnek örnekte azaltmıştım. Bu kod üretilir ve bazı durumlarda beklenmeyen isimler seçecektir varsayım insanlar altında ad çakışmaları önlemek için denemek gerekir Avro olarak sizeDeğişken ve üst düzey paket adı arasındaki Java adı çakışması
error: cannot find symbol
nl.basjes.experiment.NamingClash.foo();
^
symbol: variable basjes
location: variable nl of type String
verecek derlemek çalışılıyor
package nl.basjes.experiment;
public class NamingClash {
String nl = "foo";
public void test() {
nl.basjes.experiment.NamingClash.foo();
}
private static void foo() {
// Do something
}
}
.
Dolayısıyla bu örnekte varsayalım o
- yöntem çarpışmayı önlemek için gereklidir '() testi' tam olarak nitelenmiş sınıf ismi.
- 'nl' değişkeni şema tanımında kullanılan addır.
- _nl__ gibi bir alan oluşturmak ve alıcılara ve ayarlayıcılara sahip olmak, geriye doğru uyumluluğu bozacak bir değişiklik olacaktır çünkü nl alanı her zaman herkese açıktır.
İnsanlara "Sadece bunu yapma" demekten başka.
Bu çakışmaları önlemek için bir çözüm var mı?
Bu soruyu tetikleyen AVRO hatası için bir geçici çözüm buldum. İşte ben 'genel cevap' arıyorum.
sorun için iki çözüm görebilir
http://stackoverflow.com/questions/19406673/how-to-fully-qualify-a-class-whose-package-name-collides-with-a-local-member-nam –