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

凡客帆布鞋莱芜seo排名

凡客帆布鞋,莱芜seo排名,wordpress微信登录插件下载,公司vi设计包括哪些注解 什么是注解 注解#xff08;Annotation#xff09;#xff0c;就是 Java 代码里面的特殊标记#xff0c;例如 Override、Test 等作用#xff1a;让其他程序根据注解信息来决定怎么执行该程序注意#xff1a;注解可以用在类上、构造器上、方法上、成员变量上、参数…注解 什么是注解 注解Annotation就是 Java 代码里面的特殊标记例如 Override、Test 等作用让其他程序根据注解信息来决定怎么执行该程序注意注解可以用在类上、构造器上、方法上、成员变量上、参数上…注解的本质是一个接口Java 中所有注解都是继承了 Annotation 接口的注解(…) 其实就是一个实现类对象实现了该注解以及 Annotation 接口 自定义注解 // 自定义注解 public interface MyTest {String aaa();boolean bbb() default true;String[] ccc(); }// 方法部分 MyTest(aaa Jack, ccc {Java, HTML}) public void run() {}特殊属性名value——如果注解中只有一个 value 属性使用注解时value 名称可以不写 public interface MyTest {String value(); // 特殊属性 }public interface MyTest {String value(); // 特殊属性int age() default 23; // 当有默认值时候可以不删除此行 }MyTest(Jack) public void run() {}元注解 元注解指的是修饰注解的注解 TargetElemeElenntType.TYPE作用声明被修饰的注解只能在哪些位置使用TYPE类接口FIELD成员变量METHOD成员方法PARAMETER方法参数CONSTRUCTOR构造器LOCAL_VARIABLE局部变量 import java.lang.annotation.ElementType; import java.lang.annotation.Target;Target({ElemeElenntType.TYPE,ElementType.METHOD}) // 当前被修饰的注解只能用在类和成员方法上 public interface MyTest { }Retention(RetentionPolicy.RUNTIME)作用声明注解的保留周期SOURCE只作用在源码阶段字节码文件中不存在CLASS默认值保留到字节码文件阶段运行阶段不存在RUNTIME开发常用一直保留到运行阶段 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}) // 当前被修饰的注解只能用在类和成员方法上 Retention(RetentionPolicy.RUNTIME) // 控制下面的注解一直保留到运行时 public interface MyTest { }注解的解析 什么是注解的解析 就是判断类上、方法上、成员变量上是否存在注解并把注解里的内容给解析出来 如何解析注解 思想要解析谁上面的注解就应该先拿到谁 // 自定义注解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}) Retention(RetentionPolicy.RUNTIME) public interface MyTest {String value();double aaa() default 100;String[] bbb(); }// 在类和方法上使用注解MyTest(value Jack, aaa 99.8, bbb {Java, HTML}) public class Demo {public static void main(String[] args) {}MyTest(value Tony, aaa 88.6, bbb {java, html})public void run() {} }// 解析类上的注解import org.junit.Test; import java.util.Arrays; public class AnnotationTest {Testpublic void parseClass() {// 1. 先得到 Class 对象Class c Demo.class;// 2. 解析类上的注解// 判断这个类上是否包含了某个注解if (c.isAnnotationPresent(MyTest.class)) {MyTest myTest (MyTest) c.getDeclaredAnnotation(MyTest.class);System.out.println(myTest.value());System.out.println(myTest.aaa());System.out.println(Arrays.toString(myTest.bbb()));}} } /* 运行结果:Jack99.8[Java, HTML]*/// 解析方法上的注解import org.junit.Test; import java.lang.reflect.Method; import java.util.Arrays;public class AnnotationTest {Testpublic void parseMethod() throws Exception {// 1. 先得到 Class 对象然后通过 Class 对象获取方法对象Class c Demo.class;Method m c.getDeclaredMethod(run);// 2. 解析方法上的注解// 判断这个方法上是否包含了某个注解if (m.isAnnotationPresent(MyTest.class)) {MyTest myTest (MyTest) m.getDeclaredAnnotation(MyTest.class);System.out.println(myTest.value());System.out.println(myTest.aaa());System.out.println(Arrays.toString(myTest.bbb()));}} } /* 运行结果:Tony88.6[java, html]*/应用场景 案例模拟 Junit 框架 // 需求定义若干个方法只要加了MyTest注解就会触发该方法的执行 /* 分析1.定义一个自定义注解 MyTest只能注解方法存活范围是一直都在2.定义若干个方法部分方法加上 MyTest 注解修饰部分方法不加3.模拟一个 Junit 程序可以触发加了 MyTest 注解的方法执行 */// 自定义注解部分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 {}// 模拟框架部分import java.lang.reflect.Method;public class AnnotationTest {public void test1() {System.out.println(test1);}MyTestpublic void test2() {System.out.println(test2);}public void test3() {System.out.println(test3);}MyTestpublic void test4() {System.out.println(test4);}public static void main(String[] args) throws Exception {AnnotationTest a new AnnotationTest();// 启动程序// 1. 得到 Class 对象Class c AnnotationTest.class;// 2. 提取这个类中的全部成员方法Method[] methods c.getDeclaredMethods();// 3. 遍历获取到每个方法对象看看其方法上是否存在 MyTest 注解// 如果存在则触发该方法执行for (Method method : methods) {if (method.isAnnotationPresent(MyTest.class)) {method.invoke(a); // 触发当前方法执行}}} } /* 运行结果:test2test4*/动态代理 代理将一些通用部分的代码提取出来交给代理去实现类比 Python 的装饰器 // 创建一个明星类前置工作// 明星类 public class Star implements Agent {private String name;public Star(String name) {this.name name;}// 唱歌方法public String sing(String title) {System.out.println(this.name 正在唱 title);return Think everyone!;}// 跳舞方法public void dance() {System.out.println(this.name 正在跳舞);} }// 创建一个代理人接口前置工作// 代理人接口 public interface Agent {String sing(String name);void dance(); }// 创建一个工具类即能制作出代理人的公司前置工作import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;// 中介公司类 public class ProxyUtil {// 创建代理对象的静态方法public static Agent createProxy(Star sss) {/*public static Object newProxyInstance(ClassLoader loader,Class?[] interfaces,InvocationHandler h)参数一用于指定一个类加载器参数二指定生成的代理长什么样子也就是有哪些方法参数三用来指定生成的代理对象要干什么事情*/Agent starProxy (Agent) Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(), // 参数一new Class[]{Agent.class}, // 参数二new InvocationHandler() { // 参数三Override // 回调方法public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 代理对象要做的事情请在这里写代码if (method.getName().equals(sing)) {System.out.println(准备话筒收钱20W);} else if (method.getName().equals(dance)) {System.out.println(准备场地收钱99W);}return method.invoke(sss, args);}});return starProxy; // 本静态方法的最后是————返回创建好的代理对象} }// 调用工具类让公司为某个明星对象去定制一个专属代理人正式部分public class Test {public static void main(String[] args) {// 创建一个明星叫迈克尔-杰克逊Star star new Star(Michael-Jackson);// 为迈克尔-杰克逊创建一个代理人Agent agent ProxyUtil.createProxy(star);System.out.println(agent.sing(新年好)); // 让代理人安排他唱歌System.out.println(-----------------);agent.dance(); // 让代理人安排他跳舞} }/* 运行结果:准备话筒收钱20WMichael-Jackson正在唱新年好Think everyone!-----------------准备场地收钱99WMichael-Jackson正在跳舞*/
http://www.yutouwan.com/news/383886/

相关文章:

  • 网站开发工资低内蒙古建设工程造价信息网官网信息价
  • 重庆如何软件网站推广湖南seo优化公司
  • 手机网站设计只选亿企邦做办公用品网站资料怎么收集
  • 贵州网站制作设计公司免费建立com网站
  • 深圳网站建设大概多少钱机器配件做外贸上什么网站
  • 文化传播公司网站备案wordpress user密码
  • 北京市网站备案查询模板下载免费网站
  • 网站建站网站域名申请电子商务网站建设作业文档
  • 滁州房地产网站建设网站wordpress查看文章模板
  • wordpress建站需要写代码吗二次网站开发
  • 中国装饰公司营销型网站建设准备php和易语言混编做网站
  • 知名网站建设定制论坛上怎么做网站优化
  • 网站是用什么程序做的湖南做网站 x磐石网络
  • 哪家建网站百度搜索seo优化技巧
  • hqz行情站wordpress如何更新临时域名
  • 做的网站百度搜不到沙田镇做网站
  • 石家庄网站设计建设seo新方法
  • 帮客户做网站内容建设银行网站不能登录不了
  • php 手机网站 模板在拼多多开网店的流程
  • 江苏太仓建设局网站wordpress标签云
  • 菏泽网站建设价位河北省住建厅电子证书查询
  • 宁波网站建设哪里好湛江网站制作
  • 网站的建设周期与阶段网站与网页的区别
  • 彩票网站建设应该要注意哪些wordpress多语言企业网站
  • 佛山市网站建设公司如何用ps做网站首页图片
  • 做网赌网站需要多少钱承德的网站建设公司
  • 有哪些做的比较好的网站装修房子的效果图 三室二厅二卫
  • nodejs做网站容易被攻击吗如何备份网站 整站
  • 延边网站建设网页制作免费教程
  • 沧州泊头纯设计网站制作wordpress 查询语句