日期:2014-05-19  浏览次数:20694 次

|javamy| 在给字段添加注解的时候,有些说明是可写可不写的,但是Java一定要全写,加default后就可以,但String default 不了 谢谢
Java code

package z.core.hibernateCore.attribute;

import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;

/**
 * 标示为数据字段
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface DataColumn {
    /**
     * 字段描述
     * 
     * @return
     */
    public String name();

    /**
     * 是否为多对一关系
     * 
     * @return
     */
    public boolean many_to_one() default false;

    /**
     * 默认值
     * 
     * @return
     */
    public String defaultValue() default null;
}


上面是一个注解
但是: public String defaultValue() default null;
这一句不通过,String的default 不是 null 吗?
因为不加default的话在给字段加注解的时候就一定得写全
只能:@DataColumn(name = "用户ID",defaultValue="默认值")
不能:@DataColumn(name = "用户ID")
那String的default是什么 谢谢

------解决方案--------------------
public String defaultValue(); 不写就是默认为null,写了必须有值比如""、"nihao";

------解决方案--------------------
注释应该不能设置默认值为null,它应该是一个编译期常量。
用这种方式: "" 或者 Void.class。

------解决方案--------------------
探讨
原因是:
The value for annotation attribute DataColumn.columnName must be a constant expression
他是要求要一个默认值为常量的
然后我试用
--------------
@DataColumn(name = "用户ID", defaultValue= null)
private int userid……