2009-08-15 4 views
1

J'ai mis en place une annotation qui sera utilisée pour garder une trace des classes, mais je reçois une erreur lorsque j'essaie de compiler un code Java qui utilise l'annotation.Erreur d'annotation impaire

Voici le code d'annotation:

package tlib.anno; 

import java.lang.annotation.*; 

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.TYPE) 

public @interface Class 
{ 
    String author(); 
    String contact(); 
    String creationDate(); 
    String creationTime(); 

    String lastUpdateDate(); 
    String lastUpdateTime(); 

    int version() default 1; 
    int majorVersion() default 0; 
    int minorVersion() default 0; 
    int build() default 1; 
} 

Puis, quand je tente d'utiliser l'annotation comme ceci:

import tlib.anno.Class; 

... 

@Class(author = "tjlevine", 
    creationDate = "2/18/09", 
    creationTime = "11:20:16 PM", 
    lastUpdateDate = "2/18/09", 
    lastUpdateTime = "11:27 PM", 
    version = 1, 
    majorVersion = 1, 
    minorVersion = 0) 
public class Vector2d implements Cloneable 
{ 
    ... 
} 

Le compilateur me donne cette erreur:

/media/disk/programming/java/tLib/src/tlib/math/Vector2d.java:13: annotation tlib.anno.Class is missing contact

Google est de peu d'aide avec cette erreur, et je ne peux pas comprendre ce qu'il me dit.

Répondre

3

Modifier à:

public @interface Class { 
    String author() default ""; 
    String contact() default ""; 
    String creationDate() default ""; 
    String creationTime() default ""; 

    String lastUpdateDate() default ""; 
    String lastUpdateTime() default ""; 

    int version() default 1; 
    int majorVersion() default 0; 
    int minorVersion() default 0; 
    int build() default 1; 
} 

Fondamentalement, le compilateur se plaint parce que la façon dont vous avez défini, le contact est nécessaire et vous n'avez pas spécifié il.

Bien sûr, vous ne souhaiterez peut-être pas rendre tous ces attributs facultatifs. Ne spécifiez simplement pas une valeur par défaut pour tous ceux qui sont requis.

+0

Merci beaucoup, se sentir bête maintenant, haha – tjlevine