A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jingzhouheima 中级黑马   /  2013-8-11 11:27  /  1498 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jingzhouheima 于 2013-8-14 07:45 编辑

先自定定义了一个注解类 AnnoType
public @interface AnnoType
{
     String country() default "Astralia" ;
}
然后又定义了一个注解类 ItcastAnnotation 去调用AnnoType
public @interface ItcastAnnotation
{
     AnnoType annoType() default @AnnoType(country = "CHINA");
}

问题:我在注解类 AnnoType中只定义了一个属性,为什么我在注解类 ItcastAnnotation 去调用AnnoType的时候,
对AnnoType的属性设置必须通过(country = "CHINA"),而不是("CHINA")呢?如果是后者,则会爆出错误,如下图:

000.png (3.04 KB, 下载次数: 15)

问题代码

问题代码

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 得到答案后请更改为已解决

查看全部评分

4 个回复

倒序浏览
不是只有一个属性的时候不用写属性名称和“=”,而是只有value属性需要设值的时候,可以不写“value=”。所以,你可以再定义一个value属性,在另一个注解里调用试试。我试过的代码如下:
package Annotation;

public @interface AnnoType
{
    String country() default "Astralia" ;
String value();
}

public @interface ItcastAnnotation
{
     AnnoType annoType() default @AnnoType("abc");
     
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
只有属性名是value的时候才不用写属性名直接赋值啊~~你把那个属性名改成value就可以了
  1. public @interface AnnoType
  2. {
  3. String value() default "Astralia" ;
  4. }

  5. public @interface ItcastAnnotation
  6. {
  7.      AnnoType annoType() default @AnnoType("abc");
  8.      
  9. }
复制代码
回复 使用道具 举报
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作
回复 使用道具 举报
杨璐敏 发表于 2013-8-13 22:19
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~

谢谢提醒。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马