SORU
7 Temmuz 2011, PERŞEMBE


Sınıf arasındaki fark nedir.() getResource ve ClassLoader.() getResource?

Fark nedir Class.getResource() ClassLoader.getResource() arasında acaba?

edit: ben özellikle eğer herhangi bir önbellekleme/dizin düzeyi dosyası dahil olup olmadığını bilmek istiyorum. Dizin listeleri Sınıf sürümü önbelleğe"?"

AFAIK aşağıdaki esasen aynı şeyi yapmalı, ama değil

getClass().getResource() 
getClass().getClassLoader().getResource()

Bu dizinde varolan bir dosyadan WEB-INF/classes/ yeni bir dosya oluşturan bir rapor oluşturma kodu ile işe yaramaz bu keşfettim. Sınıftan yöntemini kullanırken, orada dağıtım getClass().getResource(), ama yeni oluşturulan bir dosya almaya çalışırken, boş bir nesne aldı kullanarak dosyaları bulabilirim. Dizin tarama açıkça yeni bir dosyası olduğunu gösterir. Dosya adları gibi, bir eğik çizgi ile e "/myFile.txt".

Diğer yandan getResource() ClassLoader sürümü oluşturulan dosya buldunuz. Bu deneyimden dizin listesi devam önbelleğe çeşit var gibi görünüyor. Nerede bu belgelenmiştir eğer haksız mıyım?

Class.getResource() API docs

Bir kaynak bulur verilen bir isim. Kuralları arama kaynakları ile ilgili verilen sınıf tarafından yürütülür sınıfın yükleyici tanımlama. Bu nesne için delege yöntemi sınıf yükleyici. Eğer bu nesne olsaydı bootstrap sınıf yükleyicisi tarafından yüklenen yöntemi için temsilciler ClassLoader.getSystemResource(java.lang.Dize).

Bana göre, bu "Sınıf okur.getResource gerçekten kendi classloader. getResource arıyor()". getClass().getClassLoader().getResource() davranmak her zaman aynı olacaktır. Ama belli ki değil. Birisi bu konuda biraz aydınlatma ile sağlamak beni lütfen?

CEVAP
7 Temmuz 2011, PERŞEMBE


Class.getResource "" sınıfın paket göreli olarak kabul edilir. kaynak adı, göreli alabilir Alternatif olarak, bir "" lider bir eğik çizgi kullanarak. kaynak adı mutlak belirtebilirsiniz Classloader kaynak yolları her zaman mutlak sayılır.

Temelde eşdeğer:

foo.bar.Baz.class.getResource("xyz.txt");
foo.bar.Baz.class.getClassLoader().getResource("foo/bar/xyz.txt");

Bunlar da öyle (ama yukarıda farklılar :)

foo.bar.Baz.class.getResource("/data/xyz.txt");
foo.bar.Baz.class.getClassLoader().getResource("data/xyz.txt");

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hudson Music

    Hudson Music

    13 Mart 2007
  • Motor Trend Channel

    Motor Trend

    11 Mart 2006
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012