19 Mayıs 2010, ÇARŞAMBA
Nasıl "nesne yapar.yeni" iş? (Yok Java var .yeni operatör?)
Bu kod üzerinde iken bugün Accelerated GWT (Gupta) - page 151 okumaya geldim.
public static void getListOfBooks(String category, BookStore bookStore) {
serviceInstance.getBooks(category, bookStore.new BookListUpdaterCallback());
}
public static void storeOrder(List books, String userName, BookStore bookStore) {
serviceInstance.storeOrder(books, userName, bookStore.new StoreOrderCallback());
}
Bu yeni operatörler orada ne yapıyorsun? Hiç böyle bir sözdizimi gördüm, birisi açıklayabilir mi?
Herkes java spec bu nereden biliyor?
CEVAP
19 Mayıs 2010, ÇARŞAMBA
Onlariç(statik olmayan iç içe geçmiş) sınıflar:
public class Outer {
public class Inner { public void foo() { ... } }
}
Yapabilirsiniz:
Outer outer = new Outer();
outer.new Inner().foo();
ya da sadece:
new Outer().new Inner().foo();
Bunun nedeni Inner
dış sınıfın belirli bir örneği için bir başvuru var. Bana bunu daha ayrıntılı bir örnek vereyim:
public class Outer {
private final String message;
Outer(String message) {
this.message = message;
}
public class Inner {
private final String message;
public Inner(String message) {
this.message = message;
}
public void foo() {
System.out.printf("%s %s%n", Outer.this.message, message);
}
}
}
ve çalıştırın:
new Outer("Hello").new Inner("World").foo();
Çıkışlar:
Hello World
Not:yuvalanmış sınıfları static
da olabilir. Eğer öyleyse, dış sınıfına this
örtülü referans var:
public class Outer {
public static class Nested {
public void foo() { System.out.println("Foo"); }
}
}
new Outer.Nested.foo();
Daha sık değil, statik, iç içe geçmiş sınıflar uygulama ayrıntıları ve kamu ad kirletmeden bir sorunun parçası sarmalayan düzgün bir yol olma eğilimindedir private
.
Bunu Paylaş:
Java dize havuzu ne olduğunu ve nasıl ...
Nasıl dosyaları söyleyerek "old m...
Kullanarak "Nesne.oluştur" y...
((yeni nesne) kilit -- Kargo kültü ya ...
Studio Android:/nasıl update " kal...