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
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");
Arayüz ve soyut sınıf arasındaki fark ...
Sınıf ve örnek yöntemleri arasındaki f...
Scala'nın durumu, sınıf ve sınıf ...
Türü ve Sınıf arasındaki fark nedir?...
Arasındaki fark nedir "Sınıf.() f...