获取不到方法的注解

注解是不干扰原来的代码的执行的,起到一种标识作用,让第三方的注解工具来提

取注解,来完成所需的任务。

package two.zj;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Retention<span style="color:#ff0000;">(</span><span style="background-color: rgb(255, 0, 0);">RetentionPolicy.RUNTIME</span><span style="color:#ff0000;">)</span>
@Target(ElementType.METHOD)
public @interface TestZJ {
	public int id() default 1;
	public String name() default "nametest";
	public String value() ;
	public abstract int [] intt();
	public abstract TestEnum[] tenum();

}

package two;

import two.zj.TestEnum;
import two.zj.TestZJ;
public class UserAnn {
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * @param user
<span style="white-space:pre">	</span> * @return user
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>@TestZJ(id=22,name="liyy", intt = { 0,1,2,3 }, value = "", tenum = {TestEnum.TEST1})
<span style="white-space:pre">	</span>public User getUser(User user) {
<span style="white-space:pre">		</span>return user;
<span style="white-space:pre">	</span>}

}

package two;

import java.lang.reflect.Method;

import two.zj.TestZJ;

public class Testmain {

public static void main(String[] args) throws ClassNotFoundException {

// Class class1 = Class.forName("two.UserAnn");

Class class1 = UserAnn.class;

Method [] methods = class1.getDeclaredMethods();

for(Method method:methods){

TestZJ annotations = method.getAnnotation(TestZJ.class);

if(annotations !=null){

System.out.println(annotations.id());

}

}

}

}

当注解类TestZJ中的@Retention(RetentionPolicy.RUNTIME)   为source 或者class 时候 反射是获取不到注解类的,因为jdk用说明

public enum RetentionPolicy {

/**

* Annotations are to be discarded by the compiler.

*/

SOURCE,

/**

* Annotations are to be recorded in the class file by the compiler

* but need not be retained by the VM at run time.  This is the default

* behavior.

*/

CLASS,

/**

* Annotations are to be recorded in the class file by the compiler and

* retained by the VM at run time, so they may be read reflectively.

*

* @see java.lang.reflect.AnnotatedElement

*/

RUNTIME

}

SOURCE在编译的c字节码中去掉注解,CLASS 字节码中有注解但是不加载到虚拟机,RUNTIME可以通过反射获取到注解信息,而注解框架也是采用的这种原理。

				
时间: 2024-11-10 11:35:21

获取不到方法的注解的相关文章

Java中获取路径的方法_自我分析

就目前的我来说最常用的两种获取路径的方法是  class.getRecource(filename) 和 class.getclassloader.getRecource(filename) 这两者的区别其实很简单就是路径的时候有点不同,这里主要讲两个参数,其他的路径获取,其他的话在根据相对路径逐一查找就行了 class.getRecource(filename): 参数"/" 表示获取根目录; (即我们常用到的bin目录[字节码文件存放的目录] " "  表示获取

反射之获取类,方法等

1 反射之获取类      获取类有三种方法 public interface Person { public void sayHi(); }   public class Student  implements Person{ private String id; private String name; private int age; public int sex=1; //省去构造方法和get set方法 } Class c1 = Student.class; Class c2=Clas

ClassLoader.getResourceAsStream(name); 获取配置文件的方法

ClassLoader.getResourceAsStream(name);路径问题 InputStream in = getClass().getResourceAsStream('/'+"spring-beans.dtd"); 表示从classs目录下面的找文件,文件放在src下面就可以了.InputStream in = getClass().getResourceAsStream("spring-beans.dtd"); 表示从当前classs下面的路径找文

DevExpress实现根据行,列索引来获取RepositoryItem的方法

/// <summary> /// 根据行,列索引来获取RepositoryItem /// </summary> /// <param name="view">GridView</param> /// <param name="rowIndex">行索引</param> /// <param name="columnIndex">列索引</param>

微信公众平台网页获取用户OpenID方法

下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧.用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信“网页授权获取用户基本信息”高级接口结合使用,获得用户的登入个人信息.具体方法1.配置网页授权回调域名,如 www.111cn.net2.模拟公众号的第三方网页,http://www.111cn.net/getcodeurl

JQuery获取元素的方法总结

JQuery获取元素的方法总结 一.说明   获取元素的方法分为两种:jQuery选择器.jQuery遍历函数. 做个总结,巩固下知识. 二.获取本身 1.只需要一种jQuery选择器   选择器 实例 说明 #Id $('#myId') ID选择器: 可以获取到ID为"myId"的元素,区分大小写 2.多种jQuery选择器组合 分为两部分:前半部分获取到的是一个元素集合,后半部分可以精确为一个元素,两者相结合,可以获取到想要的元素. 1)前半部分选择器   选择器 实例 说明 .c

反射之获取类,方法(0)

1 反射之获取类      获取类有三种方法 public interface Person { public void sayHi(); }   public class Student  implements Person{ private String id; private String name; private int age; public int sex=1; //省去构造方法和get set方法 } Class c1 = Student.class; Class c2=Clas

js获取元素样式方法

? 1 2 3 4 5 6 7 8 function getStyle(ojb,attr){       if(obj.currentStyle){             return obj.currentStyle[attr];       }         else{            return getComputedStyle(obj,false)[attr];        } } js获取元素样式方法,布布扣,bubuko.com

Java从控制台获取数据的方法

一.使用System.in.read()一次获取一个字节 输入再多数据,只会获取第一个字节的int形式.获取的是字节,而不是字符,所以如果输入中文字符,强转后会得到乱码 1 try { 2 int in_num=System.in.read(); //获取的是一个字节的int类型 3 System.out.println("强转前:"+in_num); 4 System.out.println("强转后:"+(char)in_num); 5 } catch (IOE