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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义