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

如何用微信支付购物网站服装定制品牌有哪些

如何用微信支付购物网站,服装定制品牌有哪些,网站建设的规模设想,公司网页怎么制作目录概述、自定义注解元注解TargetRetention注解的解析应用场景概述、自定义注解 注解(Annotation) 就是Java代码里的特殊标记、比如:Overwrite,作用:让其他程序根据注解信息来决定怎么执行该程序 注意:注…

目录

  • 概述、自定义注解
    • 元注解
      • @Target
      • @Retention
  • 注解的解析
  • 应用场景

概述、自定义注解

注解(Annotation)
就是Java代码里的特殊标记、比如:@Overwrite,作用:让其他程序根据注解信息来决定怎么执行该程序

注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上等位置处

自定义注解
就是自己定义注解

public @interface 注解名称{public 属性类型 属性名() default 默认值;
}

注解本质是一个接口,Java中所有注解都是继承了Annotation接口的

@注解(...)其实就是一个实现类对象,实现了该注解以及Annotation接口

特殊属性名:value
如果注解中只有一个value属性,使用注解时,value名称可以不写
如果还有其他属性,其他属性都有默认值,value名称也可不写

在这里插入图片描述
在这里插入图片描述

package annotation;public @interface MyTest5 {int value();String name() default "dd";}
package annotation;@MyTest5(100)
public class AnnotationTest3 {}

元注解

修饰注解的注解就是元注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Test{}

@Target

@Target(ElementType.TYPE)

1. TYPE,类,接口
2. FIELD,成员变量
3. METHOD,成员方法
4. PARAMETER,方法参数
5. CONSTRUCTOR,构造器
6. LOCAL_VARIABLE,局部变量

如下MyAnnotation注解只能用在成员方法、类、接口上
在这里插入图片描述
在这里插入图片描述

package annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Target;@Target({ElementType.METHOD, ElementType.TYPE})
public @interface MyAnnotation {String aaa();String[] ccc();boolean bbb() default true;
}
package annotation;
@MyAnnotation(aaa = "hello", ccc = "java")
public class AnnotationTest {@MyAnnotation(aaa = "公主", ccc = "前端")public void test1() {}public static void main(String[] args) {}
}@MyAnnotation(aaa="",ccc="")
interface A{}

@Retention

@Retention
作用:声明注解的保留周期

SOURCE
只作用在源码阶段,字节码文件中不存在CLASS(默认值)
保留到字节码文件阶段,运行阶段不存在RUNTIME(开发常用)
一直保留到运行阶段

创建如下三个注解:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

编译器并没有记录下 test2() 方法的注解信息;
编译器分别使用了 RuntimeInvisibleAnnotations 和 RuntimeVisibleAnnotations 属性去记录了test1()方法 和 test3()方法
的注解信息;

注解的解析

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

如何解析注解?
指导思想:要解析谁上面的注解,就应该先拿到谁

  • 比如要解析类上面的注解,则应该先获取该类的Class对象,再通过Class对象解析其上面的注解
  • 要解析成员方法上的注解,则应该获取到该成员方法大的Method对象,再通过Method对象解析其上面的注解
  • Class、Method、Field、Constructor都实现了AnnotatedElement接口,它们都拥有解析注解的能力
AnnotatedElement接口提供了解析注解的方法说明
public Annotation[] getDeclaredAnnotations()获取当前对象上面的注解
public T getDeclaredAnnotation(Class annotationClass)获取指定的注解对象
public boolean isAnnotationPresent(Class annotationClass)判断当前对象上是否存在某个注解

解析类注解案例:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface MyTest4 {String value();double aaa() default 100;String[] bbb();}
package annotation;
@MyTest4(value = "孙悟空",bbb = {"齐天大圣"})
public class Demo2 {@MyTest4(value = "猪八戒",bbb = {"九齿钉耙"})public void test1(){}
}
package annotation;
import java.util.Arrays;public class AnnotationTest2 {public static void main(String[] args) {Class demo2Class = Demo2.class;System.out.println(demo2Class.isAnnotationPresent(MyTest4.class));MyTest4 declaredAnnotation = (MyTest4)demo2Class.getDeclaredAnnotation(MyTest4.class);System.out.println(Arrays.toString(declaredAnnotation.bbb()));System.out.println(declaredAnnotation.value());System.out.println(declaredAnnotation.aaa());}
}

解析方法上注解:
只需要修改如下代码,其他不变
在这里插入图片描述

package annotation;
import java.lang.reflect.Method;
import java.util.Arrays;public class AnnotationTest2 {public static void main(String[] args) throws Exception{Class demo2Class = Demo2.class;
//        System.out.println(demo2Class.isAnnotationPresent(MyTest4.class));MyTest4 declaredAnnotation = (MyTest4)demo2Class.getDeclaredAnnotation(MyTest4.class);
//        System.out.println(Arrays.toString(declaredAnnotation.bbb()));
//        System.out.println(declaredAnnotation.value());
//        System.out.println(declaredAnnotation.aaa());Method test1 = demo2Class.getDeclaredMethod("test1");if(test1.isAnnotationPresent(MyTest4.class)){MyTest4 declaredAnnotation1 = test1.getDeclaredAnnotation(MyTest4.class);System.out.println(declaredAnnotation1.aaa());System.out.println(declaredAnnotation1.value());System.out.println(Arrays.toString(declaredAnnotation1.bbb()));}}
}

在这里插入图片描述

应用场景

配合反射等技术做框架

如下是
模拟Junit框架
需求:
定义若干个方法,只要加了MyTest注解,就会触发该方法的执行

package annotation;
import java.lang.reflect.Method;
public class Demo3 {public static void main(String[] args) throws Exception{Class<Demo3> demo3Class = Demo3.class;Demo3 demo3 = new Demo3();Method[] declaredMethods = demo3Class.getDeclaredMethods();for (Method declaredMethod : declaredMethods) {if(declaredMethod.isAnnotationPresent(MyTest.class)){declaredMethod.invoke(demo3);}}}@MyTestpublic void test1() {System.out.println("方法一执行");}@MyTestpublic void test2() {System.out.println("方法二执行");}@MyTestpublic void test3() {System.out.println("方法三执行");}public void test4() {System.out.println("方法四执行");}}

在这里插入图片描述

package annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyTest {}

在这里插入图片描述

http://www.dtcms.com/a/600033.html

相关文章:

  • 甘肃网站快速排名策划360老是提示危险网站
  • 网站开发框架 cwordpress静态规则
  • 福州网站开发公司wordpress相关网站
  • 永安网站建设域名查ip
  • 网站中捕获鼠标位置网站开发的心得体会
  • 全是广告的网站html5视频网站源码
  • 广西建设厅查询网站南方医科大学精品课程建设网站
  • 四川省住房与城乡建设部网站公司英文网站建设
  • 自己做一个商城网站怎么做python和php网站开发
  • php商城网站开发报告在线制作电子公章免费
  • 襄阳做网站排行榜如何做好一个外贸进网站的编辑
  • 郑州网站推广美妆企业网站模板
  • 网络营销是以什么为基础长沙哪里有网站推广优化
  • 一站式网站建设行业wordpress悬浮插件
  • 海淘网站建设wordpress加中文
  • 昆明网站排名优化报价将任意网站提交给google搜索引擎
  • 淘宝网站首页设计分析常州网站建设推广
  • 旅游网站建设维护wordpress seo联接插件
  • 合肥建设工程竣工结算备案网站半年工作总结ppt模板
  • 自开发网站湘潭高新区建设局网站
  • 自媒体自助下单网站怎么做网站架构设计师
  • 怎么什么软件可以吧做网站python改写WORDPRESS
  • 网站色调设计方案网站推广包括哪些
  • 软件下载免费大全网站yum wordpress
  • 长春能开发网站的公司深圳大腕互联网站建设
  • 内江做网站企业品牌宣传推广
  • cms建站方案wordpress 短链插件
  • wordpress .ds_store长春网站优化方案
  • 蚌埠企业做网站装潢设计培训中心
  • html网页设计作品及其赏析百度推广怎么优化