নিম্নলিখিত কোড বিবেচনা করুন:
উঃ জাভা:
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface A{}
সি জাভা:
import java.util.*;
@A public class C {
public static void main(String[] args){
System.out.println(Arrays.toString(C.class.getAnnotations()));
}
}
প্রত্যাশার মতো কাজগুলি সংকলন এবং চলমান:
$ javac *.java
$ java -cp . C
[@A()]
তবে তারপরে এটি বিবেচনা করুন:
$ rm A.class
$ java -cp . C
[]
অনুপস্থিত ছিলাম ClassNotFoundException
যেহেতু @A
এটি একটি নিক্ষিপ্ত হবে since তবে পরিবর্তে, এটি নীরবে টীকাটি বাদ দেয়।
এই আচরণটি কোথাও জেএলএসে নথিভুক্ত করা হয়েছে, না এটি সান এর জেভিএমের এক গৌরব? এর যৌক্তিকতা কী?
এটি javax.annotation.Nonnull
(যেমনটি @Retention(CLASS)
যাইহোক এটি হওয়া উচিত ছিল বলে মনে হয়) এর মতো সুবিধাজনক বলে মনে হয় তবে অন্যান্য অনেক টিকাশির জন্য মনে হয় এটি রানটাইম সময়ে বিভিন্ন খারাপ জিনিস ঘটায়।