SORU
13 NİSAN 2009, PAZARTESİ


Yansıma Java: Nasıl bir değişken adını almak için?

Java Yansıma kullanarak, yerel bir değişken adını almak mümkün mü? Eğer bu var, örneğin:

Foo b = new Foo();
Foo a = new Foo();
Foo r = new Foo();

yani bu değişkenler, isim bulamayan bir yöntemi uygulamak mümkün

public void baz(Foo... foos)
{
    for (Foo foo: foos) {
        // Print the name of each foo - b, a, and r
        System.out.println(***); 
    }
}

EDİT: Bu soru farklıdır Is there a way in Java to find the name of the variable that was passed to a function? o daha sadece sorduğu soruyla ilgili olsun bir yansıması olabilir belirlemek için isimde bir yerel değişken, oysa diğer soru (dahil olmak üzere kabul edilen cevap) daha fazla odaklanmış testi değerleri değişkenler.

CEVAP
13 NİSAN 2009, PAZARTESİ


Java 8, bazı yerel değişken adı yansıma bilgi edinilebilir. Bakın"" . Update aşağıda bölüm.

Tam bilgi genellikle sınıf dosyaları içinde saklanır. -Derleme optimizasyon bir uzay (ve bazı obsfuscation sağlayan) tasarruf kaldırmaktır. Mevcut olduğunda ancak, her yöntem kapsamında oldukları yerde yerel değişkenler ve talimatları aralığı yazın ve isim listeleri yerel değişken tablo özniteliği vardır.

Belki de ASM gibi byte kod Mühendisliği Kütüphanesi, çalışma zamanı bu bilgileri incelemek için izin verecek. Bu Bilgi ihtiyacı için aklıma gelen tek mantıklı yer geliştirme aracı ve kod bayt mühendislik başka amaçlar için de yararlı olması muhtemeldir.


Güncelleme:Bunun için sınırlı destek adlarını şimdi yansıma yoluyla ulaşılabilir added to Java 8. Parametre (yerel değişken özel bir sınıf). Diğer amaçlar arasında, bu @ParameterName ek açıklamalar bağımlılık enjeksiyon konteyner tarafından kullanılan değiştirmek için yardımcı olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • eHow

    eHow

    27 NİSAN 2006
  • iNCH

    iNCH

    20 Temmuz 2009