Java'nın Class.getName()
ve Class.getCanonicalName()
arasındaki fark nedir?İsim ve CanonicalName arasındaki fark nedir?
cevap
aşağıdaki programı düşünün:
package org.test.stackoverflow;
public class CanonicalName {
public static void main(String[] args) {
CanonicalName cn = new CanonicalName();
cn.printClassNames();
}
private Anonymous anony;
private MyAnony myAnony;
public CanonicalName() {
anony = new Anonymous() {
public void printInterface() {
System.out.println("Anony Name: " + getClass().getName());
System.out.println("Anony CanonicalName: " + getClass().getCanonicalName());
}
};
myAnony = new MyAnony();
}
public void printClassNames() {
System.out.println("CanonicalName, Name: " + getClass().getName());
System.out.println("CanonicalName, CanonicalName: " + getClass().getCanonicalName());
anony.printInterface();
myAnony.printInterface();
}
private static interface Anonymous {
public void printInterface();
}
private static class MyAnony implements Anonymous {
public void printInterface() {
System.out.println("MyAnony Name: " + getClass().getName());
System.out.println("MyAnony CanonicalName: " + getClass().getCanonicalName());
}
}
}
Çıktı:
CanonicalName, Name: org.test.stackoverflow.CanonicalName
CanonicalName, CanonicalName: org.test.stackoverflow.CanonicalName
Anony Name: org.test.stackoverflow.CanonicalName$1
Anony CanonicalName: null
MyAnony Name: org.test.stackoverflow.CanonicalName$MyAnony
MyAnony CanonicalName: org.test.stackoverflow.CanonicalName.MyAnony
Yani temel sınıfları için, aynı şeyi iade gibi görünüyor. İç sınıflar için getName()
, $
adlandırma kuralını (yani .class dosyaları için ne kullanılır) kullanır ve getCanonicalName()
, sınıfı başlatmaya çalışıyorsanız ne kullanacağınızı döndürür. Bunu (küçük-anonim) bir sınıfla yapamazsınız, bu yüzden getCanonicalName()
null döndürür.
Sadece saniyeler içinde kendi sorunuza cevap bulmak imkansız. Aldatmaya benziyor. Sorunun ve cevabın zamanları tam olarak aynı. –
@MaciejZiarko Altta bir onay kutusu var "Kendi sorunuzu cevaplayın, Soru ve Cevap stili. Son keşifimi SO'daki bilgi tabanına eklemek istedim, çünkü hiçbir yerde bulamadım. – durron597
Gelecekte başvurmak için adınızı belirtmeyin keşfetmeye/tasvir etmeye çalıştığınız konseptin ardından sınıf ... – Andrew
- 1. Python'da {} ve [] arasındaki fark nedir?
- 2. UNIX'teki $ @ ve $ * arasındaki fark nedir?
- 3. $ arasındaki fark nedir? ve PowerShell
- 4. Fark() arasındaki fark nedir mustache.js
- 5. arasındaki fark nedir?
- 6. Java arasındaki fark nedir
- 7. arasındaki fark nedir?
- 8. arasındaki fark nedir?
- 9. app.doScript ve $ .evalFile arasındaki fark nedir?
- 10. gVim ve gVim arasındaki fark nedir?
- 11. isAlpha ve isLetter arasındaki fark nedir?
- 12. Control.Enter ve Control.GotFocus olayları arasındaki fark nedir?
- 13. .got ve .got.plt bölümü arasındaki fark nedir?
- 14. AutomationProperties.AutomationID ve AutomationProperties.Name arasındaki fark nedir?
- 15. Android'de getDir ve getFilesDir arasındaki fark nedir?
- 16. R içinde `=` ve `<-` arasındaki fark nedir?
- 17. uint ve System.UInt32 arasındaki fark nedir?
- 18. PropertyChangeListener ve VetoableChangeListener arasındaki fark nedir?
- 19. XSS'de IDREF ve IDREFS arasındaki fark nedir?
- 20. Cacerts ve keystore arasındaki fark nedir?
- 21. GPLv2 ve GPLv3 arasındaki fark nedir?
- 22. VarIsEmpty ve VarIsEmptyParam işlevleri arasındaki fark nedir
- 23. ActiveSupport'ta mattr_accessor ve cattr_accessor arasındaki fark nedir?
- 24. Hashtable ve Dictionary arasındaki fark nedir?
- 25. RoutedCommand ve RoutedUICommand arasındaki fark nedir?
- 26. MySQL'deki boolean ve bool arasındaki fark nedir?
- 27. Task.Factory.FromAsync ve BeginX/EndX arasındaki fark nedir?
- 28. WideChar ve AnsiChar arasındaki fark nedir?
- 29. PHP'de 'stripcslashes' ve 'stripslashes' arasındaki fark nedir?
- 30. AxInterop ve Interop arasındaki fark nedir?
Ayrıca bkz. Http://stackoverflow.com/questions/15202997/what-is-the-difference-between-canonical-name-simple-name-and-class-name-in-jav – Anush
@Anush funny, I Bakarken bunu görmedim, bu sadece benimkinden bir ay daha büyük. Teşekkürler – durron597