SORU
25 AĞUSTOS 2010, ÇARŞAMBA


Neden yok't eksik bir açıklama, çalışma zamanında bir ClassNotFoundException neden?

Aşağıdaki kodu göz önünde bulundurun:

A.java:

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
@interface A{}

C.java:

import java.util.*;

@A public class C {
        public static void main(String[] args){
                System.out.println(Arrays.toString(C.class.getAnnotations()));
        }
}

Ve beklendiği gibi çalışır derleme çalıştırma:

$ javac *.java
$ java -cp . C
[@A()]

Ama bu göz önünde bulundurun:

$ rm A.class
$ java -cp . C
[]

@A eksik olduğundan ** 8, atmanı beklerdim. Ama bunun yerine sessizce şerh düşer.

Bu İDEA bir yerde belgelenmiş davranışı ya da Sun'ın JVM bir cilvesi mi? Bunun gerekçesi ne?

Görünüşe göre kullanışlı şeyler gibi javax.annotation.Nonnull (gibi görünüyor olmalıydı @Retention(CLASS) her neyse), ama birçok diğer açıklamalar göründüğü gibi çıkar, çeşitli kötü şeyler de zamanı.

CEVAP
25 AĞUSTOS 2010, ÇARŞAMBA


Genel amaçlı-175 için daha önce kamu taslakları (ek açıklamalar), derleyici ve çalışma zamanı bilinmeyen açıklamalar, kullanımı ve bildirimi açıklama arasında daha gevşek bir kavrama sağlamak için görmezden gelirse tartışıldı. Belirli bir örnek uygulamaları TR YEREL özel ek açıklamalar dağıtım yapılandırma kontrol etmek için sunucu kullanın. Eğer aynı fasulye farklı bir uygulama sunucusu dağıtılmış olmalıdır, eğer zamanı yalnızca bir NoClassDefFoundError yetiştirmek yerine bilinmeyen açıklamaları göz ardı kullanışlı olabilirdi.

Bile ifade biraz muğlak, sanırım bu davranış sizin görmektir belirtilen İDEA 13.5.7: "... çıkarma ek açıklamalar üzerinde herhangi bir etkisi yoktur doğru bağlantı ikili temsilleri programları, Java programlama dili." Eğer ek açıklamalar () çalışma zamanında kullanılabilir kaldırılır, program hala bağlantı ve çalışması gerektiğini ve bu bilinmeyen ek açıklamalar yansıma erişilen, göz ardı ediyor Bu yorumlar.

Güneş GÖRDÜM 5 ilk sürümü bu doğru uygulamak değil, ama 1.5.0_06 olarak tespit edildi. Bulabilirsiniz ilgili hata 6322301 hata veritabanı, ancak yok noktasına herhangi bir özellikleri dışında olduğunu iddia eden "göre genel amaçlı-175 spec kurşun, bilinmeyen ek açıklamalar olmalı göz ardı ederek getAnnotations".

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cole Rolland

    Cole Rolland

    23 Kasım 2008
  • Moodle

    Moodle

    11 Mayıs 2010
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012