当前位置: 首页 > news >正文

郫县哪里有做网站的推广软件

郫县哪里有做网站的,推广软件,做卡贴质量好的网站,合肥建设网站查询注解 就是Java代码里的特殊标记,比如:Override、Test等,作用是:让其他程序根据注解信息来决定怎么执行该程序注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处 自定义注解 就是自己定义注解 自定义注解到底该怎么写&#xff1a…

注解

  • 就是Java代码里的特殊标记,比如:@Override、@Test等,作用是:让其他程序根据注解信息来决定怎么执行该程序
  • 注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处

自定义注解

就是自己定义注解

自定义注解到底该怎么写:

public @interface MyTest1 {String aaa();boolean bbb() default true;String[] ccc();
}

自定义注解写了属性,在使用注解时,除非该属性设置了默认值,不然一定要给属性赋值

特殊属性名:value

  • 如果注解中只有一个value属性,使用注解时,value名称可以不写!!
public @interface MyTest2 {String value(); //特殊属性
}

注解可以用在类、方法、变量等:

package com.zeyu.annotation;
@MyTest1(aaa="zeYu",ccc={"aaa","bbb","ccc"})
//@MyTest2(value="zeYu")
@MyTest2("zeYu")    //注解中只有一个value属性,使用注解时,value名称可以不写
public class annotationTest1 {@MyTest1(aaa="zeYu",bbb=false,ccc={"ddd","eee"})public void test1(){}
}

注解的原理

  • 注解本质是一个接口,Java中所有注解都是继承了Annotation接口的
  • @注解(...):其实就是一个实现类对象,实现了该注解以及Annotation接口

元注解

  • 指的是:修饰注解的注解

例如:

常用元注解:

代码演示:

package com.zeyu.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.TYPE,ElementType.METHOD})   //ElementType.TYPE表示该注解只可以用在类和方法上
@Retention(RetentionPolicy.RUNTIME) //控制下面的注解一直保留到运行时
public @interface MyTest3 {}

测试:

package com.zeyu.annotation;
@MyTest3    //用在类上没问题
public class annotationTest2 {
//    @MyTest3    //用在成员变量不行public String name;@MyTest3    //用在方法上没问题public void test(){}
}

什么是注解的解析?

就是判断类上、方法上、成员变量上是否存在注解,并把注解里的内容给解析出来

如何解析注解?

  • 指导思想:要解析谁上面的注解,就应该先拿到谁
  • 比如要解析类上面的注解,则应该先获取该类的Class对象,再通过Class对象解析其上面的注解
  • 比如要解析成员方法上的注解,则应该获取到该成员方法的Method对象,再通过Method对象解析其上面的注解
  • Class、Method、Field、Constructor、都实现了AnnotatedElement接口,它们都拥有解析注解的能力

解析注解的案例

具体需求如下:

  1. 定义注解MyTest4,要求如下
    包含属性:String value()
    包含属性:double aaa(),默认值为 100
    包含属性:Stringll bbb()
    限制注解使用的位置:类和成员方法上
    指定注解的有效范围:一直到运行时
  2. 定义一个类叫:Demo,在类中定义一个test1方法,并在该类和其方法上使用MyTest4注解
  3. 定义AnnotationTest3测试类,解析Demo类中的全部注解

代码:

MyTest4:
package com.zeyu.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest4 {String value();double aaa() default 100;String[] bbb();
}
Demo:
package com.zeyu.annotation;
@MyTest4(value="zeYu",bbb={"aaa","bbb"})
public class Demo {@MyTest4(value="zeYu",bbb={"ccc","ddd"})public void test1(){}
}
annotationTest3:
package com.zeyu.annotation;import org.junit.Test;import java.lang.reflect.Method;
import java.util.Arrays;public class annotationTest3 {@Testpublic void parseClass(){//先得到Class对象Class c = Demo.class;//判断类上是否包含了某个注解if(c.isAnnotationPresent(MyTest4.class)){MyTest4 myTest4 = (MyTest4) c.getDeclaredAnnotation(MyTest4.class);System.out.println(myTest4.value());System.out.println(myTest4.aaa());System.out.println(Arrays.toString(myTest4.bbb()));}}@Testpublic void parseMethod() throws Exception {//先得到Class对象Class c = Demo.class;Method test1 = c.getDeclaredMethod("test1");//判断类上是否包含了某个注解if(test1.isAnnotationPresent(MyTest4.class)){MyTest4 myTest4 = (MyTest4) test1.getDeclaredAnnotation(MyTest4.class);System.out.println(myTest4.value());System.out.println(myTest4.aaa());System.out.println(Arrays.toString(myTest4.bbb()));}}
}

测试结果:

案例:模拟Junit框架

需求

  • 定义若干个方法,只要加了MyTest注解,就会触发该方法执行

分析

  1. 定义一个自定义注解MyTest,只能注解方法,存活范围是一直都在
  2. 定义若干个方法,部分方法加上@MyTest注解修饰,部分方法不加
  3. 模拟一个junit程序,可以触发加了@MyTest注解的方法执行

代码:

MyTest:
package com.zeyu.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.METHOD) //只能用在方法上
@Retention(RetentionPolicy.RUNTIME) //一直到运行时都存在
public @interface MyTest {
}

测试类:

package com.zeyu.annotation;import java.lang.reflect.Method;public class annotationTest4 {//@MyTestpublic void test1(){System.out.println("-----------test1-----------");}@MyTestpublic void test2(){System.out.println("-----------test2-----------");}//@MyTestpublic void test3(){System.out.println("-----------test3-----------");}@MyTestpublic void test4(){System.out.println("-----------test4-----------");}public static void main(String[] args) throws Exception {//1、得到Class对象Class c = annotationTest4.class;annotationTest4 a = new annotationTest4();//2、提取这个类中的全部成员方法Method[] methods = c.getDeclaredMethods();//3、遍历这个数组中的每个方法,看方法上是否存在@MyTest注解,存在则执行该方法for (Method method : methods) {if (method.isAnnotationPresent(MyTest.class)) {//说明存在该注解,执行该方法method.invoke(a);}}}
}

运行结果:

http://www.hkea.cn/news/1672/

相关文章:

  • 做网站的难点合肥疫情最新消息
  • 上海做网站报价营销型网站建设要点
  • 教师做班级网站百度旧版本下载
  • 西宁高端网站开发公司购买网站域名
  • 做网站推广哪家公司好百度网址大全旧版
  • 做西餐的网站精准客户运营推广
  • 重庆做网站及公众号公司seo公司厦门
  • 网站代码制作百度点击器找名风
  • 最早做弹幕的网站seo优化与品牌官网定制
  • 建设银行不弹出网站集合竞价口诀背熟6句
  • php如何做视频网站今日西安头条最新消息
  • 重庆网站优化公司重庆seo团队
  • 网站建设代码标准营销推广手段有什么
  • 做的网站怎么让百度收索时搜优化防疫政策
  • 网站建立的具体步骤成都关键词优化平台
  • 网站建设seo郑州网站建设最便宜
  • wordpress midwayseo排名关键词点击
  • 北京智联招聘官方网站做家政百度推广热线电话
  • 网站开发与建设会计分录微信搜一搜排名优化
  • 京东商城平台商户网站优化的方法与技巧
  • 海康域名网站网站建设方案模板
  • 局域网网站怎么做网络优化师是什么工作
  • 网站建设注意什么app线下推广怎么做
  • 手机网站要素谷歌seo价格
  • 石家庄网站建设系统seo自学教程推荐
  • html网站建设实录如何制作网站链接
  • 在游戏网站做中介合法网络营销师主要做什么
  • 天津网站建设制作开发公司域名注册查询网站
  • 柳州网站建设源码店铺推广渠道有哪些
  • 做网站一般用什么程序公司网站制作要多少钱