当前位置: 首页> 娱乐> 明星 > 成全视频免费观看在线观看高清动漫_四年级的简短新闻播报_seo公司厦门_chrome网页版入口

成全视频免费观看在线观看高清动漫_四年级的简短新闻播报_seo公司厦门_chrome网页版入口

时间:2025/7/13 2:13:34来源:https://blog.csdn.net/m0_75260099/article/details/144334416 浏览次数:0次
成全视频免费观看在线观看高清动漫_四年级的简短新闻播报_seo公司厦门_chrome网页版入口

注释和注解不一样

注释是给程序员看的,注解是给程序看的

需要理解Socket,tomcat等内容

一、什么是注解

1. 注解的作用

①:注解一般用于对程序的说明,就像注释一样,但是区别是注释是给人看的,但是注解是给程序看的。

②:让编译器进行编译检查的作用,比如下边这个@Override注解是重写的意思,子类重写了父类的方法,但是改动了方法名,所以报错。

public class Demo implements Animal{public Stringg name ="张三”@0verridepublic void aaa(){}
}

2. 注解的格式

注解是以“@注释名”在代码当中存在的,还可以添加一些参数值,例如

@SuppressWarnings(value = "unchecked")

3. 注解在哪里使用

可以附加在packageclassmethodfield等上面,相当于给他们添加了额外的辅助信息。我们可以通过反射的方式对这些注解进行访问。

二、注解的类型

一般常用的注解分为三类:

1. 内置注解

@Override:修辞方法的,表示一个方法重写了父类方法

public class Demo extends Objects{@Overridepublic String toString(){return super.toString();    }
}

@Deprecated:修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。通俗来说就是遗弃。

public class Demo extends Objects{@Deprecated// 表明该方法被遗弃public String toString(){return super.toString();    }
}

@SuppressWarnings:用来抑制编译时的警告信息,括号里的的值包括

 a.deprecation:使用了过时的类或方法的警告b.unchecked:执行了未检查时的转换时的警告,集合就是未指定泛型c.fall through:当在switch语句使用时发生case穿透d.path:在类路径、源文件路径等中有不存在路径的警告e.serial:可序列化类上缺少serialVerisonUID定义时的警告f.finally:任何finally橘子不能完成时的警告g.all:以上所有情况的警告。一个 @SuppressWarnings("all"),多个 @SuppressWarnings(value={"all","path"})                  
public class Demo{public static void run(){List list = new ArrayList();   // 此时会有 “ Raw use of parameterized class 'List' ” 的警告 }
}
public class Demo{@SupperWarings("all")public static void run(){// 此时警告解除List list = new ArrayList();   }
}

2. 元注解

元注解是用于注解的注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类

@Target注解:用来描述注解的使用范围,即注解可以使用在什么地方,在定义注解的时候使用这个我们可以更加清晰的知道它的使用范围。

public enum ElementType {TYPE,              //类,接口FIELD,            //成员变量METHOD,          //方法PARAMETER,       //方法参数CONSTRUCTOR,    //构造方法LOCAL_VARIABLE,     //局部变量ANNOTATION_TYPE,      //注解类PACKAGE,           // 包TYPE_PARAMETER,     //类型参数TYPE_USE      //使用类型的任何地方
}

@Retention注解:表示这个注解在什么时候还有效 , 用于描述注解的生命周期

源程序阶段(Source)——xx.java/ xx.class阶段。

类对象阶段(Class)——程序文件被加载到方法区里。

运行时阶段(Runtime

public enum RetentionPolicy {SOURCE, // 源文件保留CLASS,  // 编译期保留,默认值RUNTIME // 运行期保留,可通过反射去获取注解信息,咱们自定义的类一般使用这个
}

小小的例子

@MyAnnotation// 在方法上使用,此处会报错
public class Demo{@MyAnnotationpublic static void run(){System.out.println("------");    }public static void main(String[] args){run();    }
}@Retention(value = RetentionPolicy.RUNTIME)// 运行期间保留
@Target(value = {ElementType.METHOD})// 作用在方法上面
@interface MyAnnotation{}

@Documented:只是用来标注生成javadoc的时候是否会被记录(了解就好)。

public class Demo{@MyAnnotationpublic static void run(){System.out.print("------");    }public static void main(String[] args){run();    }
}
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD})
@Documented
@interface MyAnnotation{}

@Inherited:使被它修饰的注解具有继承性 

3. 自定义注解

@interface是用来声明一个注解的,格式public @interface 注解名{定义内容}

其中的每一方法实际上是声明了一个配置参数;

方法的名称就是参数的名称;

返回值类型就是参数的类型(返回值类型只能是基本数据类型,Class,String,enum);

可以通过default来声明参数的默认值;

如果只有一个参数成员,一般参数名称为value;

注解参数必须有值,我们自定义注解元素时,经常使用空字符串,0作为默认值;

public class Demo{@MyAnnotation() // 定义了参数,不写参数会报错public void run(){System.out.print("--------");    }
}@Retention(value = RetentionPolicy.RUNTIME)
@Target(value ={ElementType.METHOD,ElementType.TYPE})
@interface MyAnnotation{// 注解的参数:参数类型+ 参数名()String name();
}

public class Demo{@MyAnnotation()// 设置了默认参数,不必加参public void run(){System.out.print("------");    }
}
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value ={ElementType.METHOD,ElementType.TYPE})
@interface MyAnnotation{// 注解的参数:参数类型+ 参数名()String name() default "hello";
}
public class Demo{@MyAnnotation(name = "goose")// 如果有默认值,我们可以赋值也可以不赋值// 如果没有默认值,那么必须给注解值public void run(){System.out.print("------");    }
}
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value ={ElementType.METHOD,ElementType.TYPE})
@interface MyAnnotation{// 注解的参数:参数类型+ 参数名()String name() default "hello";
}
public class Demo{@MyAnnotation("goose")// 此处可以不写name ="xxx"// value可以默认不写public void run(){System.out.print("------");    }
}
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value ={ElementType.METHOD,ElementType.TYPE})
@interface MyAnnotation{// 注解的参数:参数类型+ 参数名()String name();
}

三、注解实现

1. 自定义注解实现类

@Retention(RetentionPolicy.RUNTIME) //元注解:定义自定义注解的生命周期 ---》在运行期间保留
@Target(value = {ElementType.TYPE}) //元注解:定义自定义注解的作用返回 ---》只能作用在类上边
public @interface WebServlet {String urlMapping() default "";    
}

2. 在一个类上使用注解

@WebServlet(urlMapping = "/third")
public class ThridServlet   {}

3. 利用反射获取注解信息

//利用反射获取注信息
public static void getMessage() throws  Exception {Class  clazz = Class.forName("com.qcby.MyServletDemo.FirstServlet");//获取注解信息WebServlet webServlet = (WebServlet) clazz.getDeclaredAnnotation(WebServlet.class);System.out.println(webServlet.urlMapping());
}public static void main(String[] args) throws Exception {getMessage();
}

关键字:成全视频免费观看在线观看高清动漫_四年级的简短新闻播报_seo公司厦门_chrome网页版入口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: