Java反射(8个)
来源:互联网 发布:c语言编写 玫瑰花 编辑:程序博客网 时间:2024/06/11 18:28
package cn.happy2.demo1;import java.io.Serializable;import java.util.Map;import javax.annotation.Resource;import javax.security.auth.callback.CallbackHandler;import javax.security.sasl.SaslClient;import javax.security.sasl.SaslClientFactory;import javax.security.sasl.SaslException;public class UserInfo implements Runnable,Serializable{@Resourceprivate int age;private String str;@Overridepublic void run() {}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getStr(String name) throws NullPointerException,ArithmeticException,Exception{return "你信佛么";}public void setStr(String str) {this.str = str;}public UserInfo(Integer age, String str) {System.out.println("hehe");this.age = age;this.str = str;}public UserInfo() {System.out.println("hhhhhhhhhhhh");}}
package cn.happy2.demo1;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import javax.annotation.Resource;public class Test {/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {Class cl = Class.forName("cn.happy2.demo1.UserInfo");getPackName(cl);getPackNames(cl);getPackNamess(cl);getPackNamdess(cl);getPackNamdessss(cl);getNamddessss(cl);getNamdddessss(cl);getPackNamddessss(cl);}public static void getPackName(Class cl) {Package p = cl.getPackage();System.out.println("包名" + p.getName());System.out.println("类名" + cl.getSimpleName());}public static void getPackNames(Class cl) {System.out.println("此类父类的类名是:" + cl.getSuperclass().getName());Class[] in = cl.getInterfaces();StringBuffer sbb = new StringBuffer("此类实现的接口是:");for (Class cls : in) {sbb.append(cls.getSimpleName() + ",");}System.out.println(sbb.substring(0, sbb.length() - 1));}public static void getPackNamess(Class cl) throws Exception {StringBuffer sb = new StringBuffer("在类中的字段有:");Field[] fields = cl.getDeclaredFields();Field declared = cl.getDeclaredField("str");System.out.println("name字段:" + declared.getName());declared.setAccessible(true);Object obj = cl.newInstance();System.out.println("name字段的值为:" + declared.get(obj));for (Field item : fields) {item.setAccessible(true);sb.append(item.getName() + ",");}System.out.println(sb.substring(0, sb.length() - 1));}public static void getPackNamdess(Class cl) {StringBuffer sb = new StringBuffer("在类中的方法有:");Method[] methods = cl.getMethods();for (Method item : methods) {for (Class item1 : item.getParameterTypes()) {System.out.println(item.getName() + "方法的参数是:" + item1.getName());}sb.append(item.getName() + ",返回值类型为:"+ item.getReturnType().getSimpleName() + ",");}System.out.println(sb.substring(0, sb.length() - 1));}public static void getPackNamdessss(Class cl) throws Exception {Method method = cl.getMethod("getStr", String.class);Object obj = cl.newInstance();Object invoke = method.invoke(obj, "哈哈");System.out.println(invoke);}public static void getNamddessss(Class cl) throws Exception {Field field = cl.getDeclaredField("age");Resource ans = field.getAnnotation(Resource.class);System.out.println(ans);}public static void getNamdddessss(Class cl) throws Exception {Method method = cl.getMethod("getStr", String.class);Class[] exec = method.getExceptionTypes();StringBuffer sb = new StringBuffer("在方法中抛出异常");for (Class item : exec) {sb.append(item.getName() + ",");}System.out.println(sb.substring(0, sb.length() - 1));}public static void getPackNamddessss(Class cl) throws Exception {Constructor[] cs = cl.getConstructors();StringBuffer s = new StringBuffer("构造:");for (Constructor item : cs) {s.append(item.getName() + ",");}System.out.println(s);Constructor cs1 = cl.getConstructor(Integer.class, String.class);cs1.newInstance(18, "哈哈");}}通过反射实现获取类的 接口,异常,方法。。。等等等
阅读全文
0 0
- Java反射(8个)
- java反射之包装类和基础数据类型的坑(分享个反射工具方法)
- java基础(8)反射
- java反射8(注解)
- 和java反射有个约会
- 【Java】--反射(Java)
- java 反射机制-学习笔记(8)
- Java(8)--初识反射
- Java反射(Reflection)
- java反射(2)
- Java 高新技术(反射)
- Java(反射)
- java反射机制()
- Java深入(反射)
- java反射(二)
- JAVA反射(高新技术)
- java反射(relection)
- Java反射(reflect)
- 重要标签总结
- 51NOD1094 和为k的连续区间
- 2.4变动和最终变量(Volatile and Final Variables)
- springmvc数据回显(九)
- Spring注解配置定时任务<task:annotation-driven/>
- Java反射(8个)
- 上海找工作之旅
- Unity UI模块优化(1.原理)
- 【Linux】fork函数的理解
- 计算机的构造与解释(1)
- setContentView方法
- Codeforces Round #424 (Div. 2) D. Office Keys
- 练习题(队列)
- MyBatis 多对多完成版