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

本帖最后由 NewDemo 于 2014-4-28 10:20 编辑
  1. package day01;

  2. import java.lang.annotation.Annotation;

  3. import day02.ItheimaAnnotation;

  4. @ItheimaAnnotation
  5. public class AnnotationTest {

  6.         /*
  7.          注解测试
  8.          */
  9.         public static void main(String[] args) {
  10.                 if(AnnotationTest.class.isAnnotationPresent(ItheimaAnnotation.class)){
  11.                         ItheimaAnnotation annotation = (ItheimaAnnotation)AnnotationTest.class.getAnnotation(ItheimaAnnotation.class);
  12.                 }//这里if 的大括号只要去掉了就报错,我只有一句话啊,怎么会这样呢。。??
  13.                 System.out.println(Annotation.class);
  14.         }
  15.         @Deprecated()
  16.         public static void sayHi(){
  17.                 System.out.println("hello world");
  18.         }

  19. }
复制代码



6 个回复

倒序浏览
记得以前看视频的时候一句话可以不写的啊  现在在公司做delphi 没有java环境  帮不了
回复 使用道具 举报
:o怎么没人解答呢?
回复 使用道具 举报
if不加大括号只能控制下面的单条语句,
(ItheimaAnnotation)AnnotationTest.class.getAnnotation(ItheimaAnnotation.class);
你上面的代码虽然是在一行,看似是单条语句.但是在jvm不这样认为.给你举个例子
public static void main(String[] args) {
                int x = 0;
                if (x < 3)
                        int b = 4;  //我这里看似没有问题吧,但是编译时错的,int b = 4;
                                        //jvm会把它分解成,int b ;b = 4; 两条语句啊! 希望你能理解
                System.out.println(b);
回复 使用道具 举报
本帖最后由 NewDemo 于 2014-4-21 18:02 编辑
悠然丶 发表于 2014-4-21 17:05
if不加大括号只能控制下面的单条语句,
(ItheimaAnnotation)AnnotationTest.class.getAnnotation(ItheimaAnn ...

感谢你的回答,你的意思我基本知道了,但是这个例子不能证明这个问题。

从错误的类型这个角度去理解,我的例子不加括号报的错误应该和你的例子是同一个错误才对,可事实是下面的两个错误
(我的错误)错误1:
        

(你的错误)错误2:


从解决方式的角度去理解,在我的例子中只需要加上大括号就可以编译通过并且运行也可以得到预想的结果,但是你的这个即使加上大括号也不能编译通过
据此两点判断你的这个例子不能证明你的解释
其实我的问题只要加上大括号就可以解决,但是却找不到合适的例子来证明论断,心理上不太能接受。
之后我觉得你的例子应该完善成下面这个
  1. <font size="3">int a=0;
  2.                 if(a<3){
  3.                         int b=3;
  4.                 }
  5.                 else{
  6.                         int b=2;
  7.                 }
  8.                
  9.                 System.out.println(b);</font>
复制代码
悲催的是到了b那里编译同样不能通过,即使加了大括号也不能通过






回复 使用道具 举报
NewDemo 发表于 2014-4-21 17:59
感谢你的回答,你的意思我基本知道了,但是这个例子不能证明这个问题。

从错误的类型这个角度去理解,我 ...

局部变量只在局部有效.离开那个大括号就会提示找不到符号了
回复 使用道具 举报
NewDemo 来自手机 中级黑马 2014-4-21 18:24:50
7#
悠然丶 发表于 2014-4-21 18:03
局部变量只在局部有效.离开那个大括号就会提示找不到符号了

晕,瞬间回到解放前。。。这个都给忘了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马