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

自己代码做网站/app开发费用

自己代码做网站,app开发费用,附近招工 最新招聘信息,资讯型电商网站优缺点什么是注解 注解是Java 5的一个新特性。注解是插入你代码中的一种注释或者说是一种元数据(meta data)。 这些注解信息可以在编译期使用预编译工具进行处理(pre-compiler tools),也可以在运行期使用Java反射机制进行处理…

什么是注解

注解是Java 5的一个新特性。注解是插入你代码中的一种注释或者说是一种元数据(meta data)。
这些注解信息可以在编译期使用预编译工具进行处理(pre-compiler tools),也可以在运行期使用Java反射机制进行处理。下面是一个类注解的例子:

@MyAnnotation(name="someName",  value = "Hello World")
public class TheClass {
}

在TheClass类定义的上面有一个@MyAnnotation的注解。注解的定义与接口的定义相似,下面是MyAnnotation注解的定义:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {public String name();public String value();
}

在 interface 前面的@符号表名这是一个注解,一旦你定义了一个注解之后你就可以将其应用到你的代码中,就像之前我们的那个例子那样。

在注解定义中的两个指示 @Retention(RetentionPolicy.RUNTIME) 和 @Target(ElementType.TYPE) ,说明了这个注解该如何使用。

@Retention(RetentionPolicy.RUNTIME) 表示这个注解可以在运行期通过反射访问。如果你没有在注解定义的时候使用这个指示那么这个注解的信息不会保留到运行期,这样反射就无法获取它的信息。

@Target(ElementType.TYPE) 表示这个注解只能用在类型上面(比如类跟接口)。你同样可以把Type改为Field或者Method,或者你可以不用这个指示,这样的话你的注解在类,方法和变量上就都可以使用了。

关于Java注解更详细的讲解可以访问Java Annotations tutorial。

类注解

你可以在运行期访问类,方法或者变量的注解信息,下是一个访问类注解的例子:

Class aClass = TheClass.class;
Annotation[] annotations = aClass.getAnnotations();for(Annotation annotation : annotations){if(annotation instanceof MyAnnotation){MyAnnotation myAnnotation = (MyAnnotation) annotation;System.out.println("name: " + myAnnotation.name());System.out.println("value: " + myAnnotation.value());}
}

你还可以像下面这样指定访问一个类的注解:

Class aClass = TheClass.class;
Annotation annotation = aClass.getAnnotation(MyAnnotation.class);if(annotation instanceof MyAnnotation){MyAnnotation myAnnotation = (MyAnnotation) annotation;System.out.println("name: " + myAnnotation.name());System.out.println("value: " + myAnnotation.value());
}

方法注解

下面是一个方法注解的例子:

public class TheClass {@MyAnnotation(name="someName",  value = "Hello World")public void doSomething(){}
}

你可以像这样访问方法注解:

Method method = ... //获取方法对象
Annotation[] annotations = method.getDeclaredAnnotations();for(Annotation annotation : annotations){if(annotation instanceof MyAnnotation){MyAnnotation myAnnotation = (MyAnnotation) annotation;System.out.println("name: " + myAnnotation.name());System.out.println("value: " + myAnnotation.value());}
}

你可以像这样访问指定的方法注解:

Method method = ... // 获取方法对象
Annotation annotation = method.getAnnotation(MyAnnotation.class);if(annotation instanceof MyAnnotation){MyAnnotation myAnnotation = (MyAnnotation) annotation;System.out.println("name: " + myAnnotation.name());System.out.println("value: " + myAnnotation.value());
}

参数注解

方法参数也可以添加注解,就像下面这样:

public class TheClass {public static void doSomethingElse(@MyAnnotation(name="aName", value="aValue") String parameter){}
}

你可以通过Method对象来访问方法参数注解:

Method method = ... //获取方法对象
Annotation[][] parameterAnnotations = method.getParameterAnnotations();
Class[] parameterTypes = method.getParameterTypes();int i=0;
for(Annotation[] annotations : parameterAnnotations){Class parameterType = parameterTypes[i++];for(Annotation annotation : annotations){if(annotation instanceof MyAnnotation){MyAnnotation myAnnotation = (MyAnnotation) annotation;System.out.println("param: " + parameterType.getName());System.out.println("name : " + myAnnotation.name());System.out.println("value: " + myAnnotation.value());}}
}

需要注意的是Method.getParameterAnnotations()方法返回一个注解类型的二维数组,每一个方法的参数包含一个注解数组。

变量注解

下面是一个变量注解的例子:

public class TheClass {@MyAnnotation(name="someName",  value = "Hello World")public String myField = null;
}

你可以像这样来访问变量的注解:

Field field = ... //获取方法对象</pre>
<pre>Annotation[] annotations = field.getDeclaredAnnotations();for(Annotation annotation : annotations){if(annotation instanceof MyAnnotation){MyAnnotation myAnnotation = (MyAnnotation) annotation;System.out.println("name: " + myAnnotation.name());System.out.println("value: " + myAnnotation.value());}
}

你可以像这样访问指定的变量注解:

Field field = ...//获取方法对象</pre>
<pre>
Annotation annotation = field.getAnnotation(MyAnnotation.class);if(annotation instanceof MyAnnotation){MyAnnotation myAnnotation = (MyAnnotation) annotation;System.out.println("name: " + myAnnotation.name());System.out.println("value: " + myAnnotation.value());
}

原创文章,转载请注明: 转载自并发编程网

http://www.lbrq.cn/news/783019.html

相关文章:

  • 广州最大网站建设/中国新闻发布
  • 佛山 网站设计公司/什么软件引流客源最快
  • 福州有什么做网站的公司/软文生成器
  • 维度网络专业做网站/千锋教育培训怎么样
  • 建设工作室网站/北京seo公司网站
  • 188旅游网站管理系统6.0模板/郑州关键词排名顾问
  • 网站建设哪家有实力/十大基本营销方式
  • 婚恋交友网站建设方案/网络营销的未来发展趋势
  • 网站外链建设与文章发布规范/武汉seo群
  • 武汉网站公司多少钱/新软件推广平台
  • 蚂蚁中国网站建设/百度电脑端入口
  • 做网站和程序员哪个好点/网络培训网站
  • 网站建设在哪个软件下做/如何创建一个平台
  • 网站内容维护外包协议/免费网站模板库
  • 一般电脑网站建设及运营多少钱/app如何推广以及推广渠道
  • 搅拌机东莞网站建设技术支持/百度的网站网址
  • 门户网站开发框架/百度推广官方电话
  • wordpress小说站主题/深圳抖音seo
  • 什么网站可以在图片上做超链接/百度推广怎么运营
  • 做彩平的网站/seo网络推广
  • 域名申请网站/搜狗seo刷排名软件
  • 重庆整合营销网站建设/seo技术外包 乐云践新专家
  • 潍坊网站开发公司/百度seo怎么操作
  • 人大网站建设成就/如何接广告赚钱
  • 传奇游戏网站怎么做/教育培训报名
  • 做面包有关电影网站/长沙网站优化排名推广
  • 做游戏的网站/合肥网络seo推广服务
  • 联盟网站制作/专业网站推广软件
  • 做网站聊城/长沙百度seo
  • 建设部科技中心网站/文军seo
  • Java 使用动态代理和反射实现字段变更跟踪
  • 芯片分享【昆泰】——CH7305A -display controller device.
  • 消息队列的优缺点
  • 跑yolov5的train.py时,ImportError: Failed to initialize: Bad git executable.
  • Pycaita二次开发基础代码解析:参数化模板创建与设计表驱动建模
  • 力扣1124:表现良好的最长时间段