java反射和泛型测试
java反射和泛型测试
package com.qsds.test; import java.lang.reflect.Method; import com.qr.util.GetFieldOrder; /** * Hello world! * */ public class App<T> { public static void main(String[] args) throws Exception { //反射测试 test sff = new test(); sff.setUsername("aaaaaaaaaaaaaaaaaa"); reflectTest(sff); //泛型反射测试 // test sff = new test(); sff.setUsername("aaaaaaaaaaaaaaaaaa"); App<test> ap = new App<test>(); ap.reflectTest2(sff); } //反射测试 public static void reflectTest(test sff) throws Exception { System.out.println("-----------"); Method[] ms = test.class.getMethods(); System.out.println("-----------"); for (Method m : ms) { GetFieldOrder gf = m.getAnnotation(GetFieldOrder.class); if (gf != null && gf.value() != 0) { String str = (String)m.invoke(sff); System.out.println("++++++++++"+gf.value()+str); } } } //泛型反射测试 public void reflectTest2(T t) throws Exception { System.out.println("-----------"); Method[] ms = t.getClass().getMethods(); System.out.println("-----------"); for (Method m : ms) { GetFieldOrder gf = m.getAnnotation(GetFieldOrder.class); if (gf != null && gf.value() != 0) { String str = (String) m.invoke(t); System.out.println("++++++++++" + gf.value() + str); } } } } class test{ private String username; private String password; public void setUsername(String username) { this.username = username; } @GetFieldOrder(1) public String getUsername() { return username; } public void setPassword(String password) { this.password = password; } @GetFieldOrder(2) public String getPassword() { return password; } }
package com.qr.util; 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 GetFieldOrder { int value(); }