Re: java - public interface - private menthods
Gianni Mariani <gi4nospam@mariani.ws> writes:
I'm only just getting to understand annotations. Any pointers on that
you can share for this specific issue ?
If you use
public @Friend(classA,classB,methodA,methodB) int x;
Java would normally allow ?x? to be accessed from everywhere.
JSR 269 allows custom annotation processing during compile time.
So, if all source files of the project are being compiled
anew, you could add a check to inspect code accessing ?x?
and raise an error if it is not part of the friend list.
I have not tried this, so I am not sure whether it can
be done.
(But, once you have build a JAR-library it might be difficult
again to enforce that third-party code does not access ?x?.)
For an example of a Java extension via JSR 269 see:
http://www.hanhuy.com/pfn/java_property_annotation
For more on JSR 269:
?Let us discuss the core points in writing a
Custom Annotation Processor in Java?
http://www.javabeat.net/javabeat/java6/articles/2007/06/java-6-0-new-features-part-2/
?Writing your first (Hello World) Annotation Processor
Annotation processing is a form of meta-programming. ?
http://blogs.sun.com/prats/entry/javac_demo@foss-2006
?Annotation processing is now enabled by default in javac?
http://blogs.sun.com/darcy/?page=2
?In the following example, we implement a checker for
empty catch blocks (because "eating exceptions silently"
is considered bad) and warn the user.?
http://blogs.sun.com/sundararajan/date/200611
?So how can I reliably find all unchecked exceptions? Very
easily if I use an annotation processor.?
http://blogs.sun.com/ahe/entry/throwing_unchecked_exceptions
You can find the documentation of Java SE classes at
http://download.java.net/jdk7/docs/api/allclasses-frame.html