+import java.util.LinkedList;
+import java.lang.reflect.Method;
+import java.lang.annotation.Annotation;
class Main {
* @param String[] args main() function arguments array
*/
public static void main(String[] args) {
+ //FIXME: one can create a smart way of building this list
+ LinkedList<Class<?>> packageClasses = new LinkedList<Class<?>>();
+ packageClasses.add(Entiers.class);
+ packageClasses.add(Forme.class);
+ packageClasses.add(Image.class);
+ packageClasses.add(Liste.class);
+ packageClasses.add(Piletransformations.class);
+ packageClasses.add(Point.class);
+ packageClasses.add(Segment.class);
+ packageClasses.add(Structure.class);
+ for (Class<?> cl : packageClasses) {
+ ClassPreamble classPreamble = cl.getAnnotation(ClassPreamble.class);
+ if (classPreamble == null)
+ System.out.println("No annotation for " + cl.getName());
+ continue;
+
+ System.out.println("Annotation date = " + classPreamble.date());
+ }
}
}
+++ /dev/null
-# define compiler and compiler flag variables
-# define a variable for compiler flags (JFLAGS)
-# define a variable for the compiler (JC)
-# define a variable for the Java Virtual Machine (JVM)
-
-JFLAGS = -g
-JC = javac
-JVM = java
-
-#
-# Clear any default targets for building .class files from .java files; we
-# will provide our own target entry to do this in this makefile.
-# make has a set of default targets for different suffixes (like .c.o)
-# Currently, clearing the default for .java.class is not necessary since
-# make does not have a definition for this target, but later versions of
-# make may, so it doesn't hurt to make sure that we clear any default
-# definitions for these
-#
-
-.SUFFIXES: .java .class
-
-
-#
-# Here is our target entry for creating .class files from .java files
-# This is a target entry that uses the suffix rule syntax:
-# DSTS:
-# rule
-# DSTS (Dependency Suffix Target Suffix)
-# 'TS' is the suffix of the target file, 'DS' is the suffix of the dependency
-# file, and 'rule' is the rule for building a target
-# '$*' is a built-in macro that gets the basename of the current target
-# Remember that there must be a < tab > before the command line ('rule')
-#
-
-.java.class:
- $(JC) $(JFLAGS) $*.java
-
-
-#
-# CLASSES is a macro consisting of N words (one for each java source file)
-# When a single line is too long, use \<return> to split lines that then will be
-# considered as a single line. For example:
-# NAME = Camilo \
- Juan
-# is understood as
-# NAME = Camilo Juan
-
-CLASSES = \
- ClassPreamble.java \
- Compactable.java \
- Affichable.java \
- Structure.java \
- Point.java \
- Forme.java \
- Image.java \
- Segment.java \
- Cercle.java \
- Entiers.java \
- Liste.java \
- Piletransformations.java \
- Main.java
-
-#
-# MAIN is a variable with the name of the file containing the main method
-#
-
-MAIN = Main
-
-#
-# the default make target entry
-# for this example it is the target classes
-
-default: classes
-
-
-# Next line is a target dependency line
-# This target entry uses Suffix Replacement within a macro:
-# $(macroname:string1=string2)
-# In the words in the macro named 'macroname' replace 'string1' with 'string2'
-# Below we are replacing the suffix .java of all words in the macro CLASSES
-# with the .class suffix
-#
-
-classes: $(CLASSES:.java=.class)
-
-
-# Next two lines contain a target for running the program
-# Remember the tab in the second line.
-# $(JMV) y $(MAIN) are replaced by their values
-
-run: $(MAIN).class
- $(JVM) $(MAIN)
-
-# this line is to remove all unneeded files from
-# the directory when we are finished executing(saves space)
-# and "cleans up" the directory of unneeded .class files
-# RM is a predefined macro in make (RM = rm -f)
-#
-
-clean:
- $(RM) *.class