黑马程序员_java高新技术之注解
来源:互联网 发布:特朗普访华意义知乎 编辑:程序博客网 时间:2024/05/29 18:40
------- android培训、java培训、期待与您交流! ----------
注解:(Annotation)
1.注解相当于一种标记,加了注解就等于加上了某种标记;没加,就等于没有这种标记。以后,javac编译器,开发工具和其他程序可以利用反射技术来了解你的类及各种元素上有何种标记,看你有什么标记,就去干相应的事,标记可以加在类,方法,字段,方法的参数或局部变量上。
2.注解类型:Annotation|---deprecated 过时
|---Override 重载
|---SuppressWarnings 警告
3.注解应用结构图
3.1 注解类
@Interface A{}
3.2应用了“注解类”的类
@A
class{
}
3.3 对应用了注解类的类进行反射操作
class C{
if(B.class.isAnnotationPresent(A.class)){
A a=B.class.getAnnotation(A.class);
}
}
4.为注解A服务的注解,即在A上加的注解称为元注解
eg:@Retention(RetentionPolicy.RUNTIME)
5.为注解添加属性
package com.fgq.annotationTest;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//元注解
@Retention(RetentionPolicy.RUNTIME)
public @interface annotationTest {
//添加基本属性
String name() default "sjdof";
int age() default 33;
//添加数组属性
int[] score() default {66,77,98};
//添加枚举类型的属性
TrafficLamp Lamp() default TrafficLamp.Green;
}
6.测试添加的属性
package com.fgq.annotationTest;
//添加注解,添加注解属性的练习
@annotationTest(name="haha")
public class annotationClassTest {
public static void main(String[] args) {
//判断注解是否存在
if(annotationClassTest.class.isAnnotationPresent(annotationTest.class)) {
//通过反射的方式获取注解对象
annotationTest annotation=(annotationTest)annotationClassTest.class.getAnnotation(annotationTest.class);
//通过注解对象输出对象中的属性
System.out.println(annotation.name());
System.out.println(annotation.age());
//输出数组类型数组的长度
System.out.println(annotation.score().length);
//输出枚举类型的属性
System.out.println(annotation.Lamp().nextLamp());
}
else
{
System.out.println("sjdieojf");
}
}
}
7.应用的枚举类
package com.fgq.annotationTest;
public enum TrafficLamp {
Red(30){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return Green;
}
},Green(45){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return Yellow;
}
},Yellow(5){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return Red;
}
};
//构造函数
private TrafficLamp(int time){
this.setTime(time);
}
//定义get,set变量time的方法
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
//定义变量,存储灯亮时间
private int time;
//定义抽象方法,获取下个那个灯亮
public abstract TrafficLamp nextLamp();
}
8.枚举和注解都是特殊的类,不能用new创建他们的实例对象,创建枚举的实例对象就是在其中添加元素。
- 黑马程序员_java高新技术之注解
- 黑马程序员_JAVA之高新技术
- 黑马程序员_Java高新技术_注解
- 黑马程序员_Java高新技术
- 黑马程序员_java高新技术
- 黑马程序员_java高新技术
- 黑马程序员_Java高新技术
- 黑马程序员_java之基础高新技术篇
- 黑马程序员_Java高新技术之静态导入
- 黑马程序员_Java高新技术之可变参数
- 黑马程序员_Java高新技术之枚举
- 黑马程序员_Java高新技术之反射
- 黑马程序员_Java高新技术之 内省 JavaBean
- 黑马程序员_java高新技术之动态代理
- 黑马程序员_java高新技术之反射
- 黑马程序员_java高新技术之反射技术
- 黑马程序员_java高新技术之枚举
- 黑马程序员_Java高新技术三_javabean、注解的应用
- 题目1199:找位置
- PAT 1015 Reversible Primes
- jQuery选择器
- 解读《TCP/IP详解》(卷1):04章:ARP(地址解析协议)
- 【COCOS2DX-LUA 脚本开发之四】使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
- 黑马程序员_java高新技术之注解
- 【COCOS2DX-LUA 脚本开发之五】Lua 使用OOP(面对对象思想编程),免Binding创建自定义lua类
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- CodeForces 387C George and Number
- 友元函数和友元类
- 不用闭包,不用函数,实现传递"参数"的功能
- Linux查看机器名及修改方法
- c#webservice 分析器错误信息: 未能创建类型“Service1”
- 很高兴 认识大家