JavaBean和反射
来源:互联网 发布:传奇3装备数据库 编辑:程序博客网 时间:2024/06/06 11:29
JavaBean
泛意的讲,凡java类都是javabean 1. 可重用的java组件---------new 2. 无参构造方法---------------[来自\<jsp:useBean>] 3. JavaBean分类: * 业务Bean: dao * 实体Bean: entity (private property + public getter/setter)
反射
1. 利用反射API来获取一个类的信息(fields/method),并且可以改变类的成员变量内容或执行方法的一种机制;2. java.lang.reflect.*; (Constructor,Methond,Filed)
获取Class对象(Class): 1) Class.forName(); 2) 类名.class; 3) 对象名.getClass(); 获取Constructor对象(Constructor): 1) getDeclaredConstructors() //返回所有的构造方法对象数组 2) getConstructors() //返回public的所有构造方法数组 获取Method对象(Method): 1) getDeclaredMethods() //返回所有的方法(不包括继承的方法)对象数组 2) getMethods() //返回public的方法 获取Field对象(Field): 1) getDeclaredFields() //返回所有的属性对象数组 2) getFields() //返回public的属性属性方法 实例一个对象: newInstance(Object[]) //实例一个对象
Test.java
package com.abc.test; import java.lang.reflect.*; import java.util.Arrays; import com.abc.test.entity.User; public class Test { public static void main(String[] args) throws Exception{ Test test = new Test(); test.testMethod(); } public void testMethod() throws Exception { System.out.println("-----------------获取一个class对象-------------------------"); //获取一个class对象 Class c1 = Class.forName("com.abc.test.entity.User"); System.out.println(c1); System.out.println("\n-----------------获取类的Constructor对象数组-------------------------"); //获取类的Constructor对象数组 Constructor[] cons = c1.getDeclaredConstructors(); for(int i = 0; i < cons.length; i++){ System.out.println(cons[i].getModifiers() + "----------"/* + cons[i] + "------------" */ + Arrays.toString(cons[i].getParameterTypes())); } System.out.println("\n------------------通过Constructor实例一个对象------------------------"); //通过Constructor实例一个对象 Constructor<User> con = c1.getDeclaredConstructor(new Class[]{int.class,String.class}); User u = (User)con.newInstance(new Object[]{12,"159"}); System.out.println(u); System.out.println("\n------------------获取Method对象数组------------------------"); //获取Method对象数组 Method[] meths = c1.getDeclaredMethods(); for (Method method : meths) { System.out.println(method); } System.out.println("\n------------------通过Method调用方法------------------------"); //通过Method调用方法 Method numbMethod = c1.getDeclaredMethod("numb", new Class[]{int.class}); Object numbMethodReturn = numbMethod.invoke(u, new Object[]{123}); System.out.println(numbMethodReturn); System.out.println("\n------------------获取Field对象数组------------------------"); //获取Field对象数组 Field[] fies = c1.getDeclaredFields(); for (Field field : fies) { System.out.println(field); } System.out.println("\n------------------通过Field设置属性------------------------"); //通过Field设置属性 Field fie = c1.getDeclaredField("sex"); fie.setAccessible(true); fie.set(u, true); System.out.println(fie.get(u)); } }
User.java
package com.abc.test.entity; public class User { private String name; private int age; private boolean sex; User(int i) { } public User(String s) { } public User(int i, String s) { } private User(int i, String s, char a) { } protected User(String[] ss,int[] is) { } //------------------- public String haha() { return "haha"; } public int numb(int num) { return num + 100; } public void hi() { System.out.println("hihihihihihihhihihihi"); } }
0 0
- JavaBean和反射
- JavaBean和反射
- 反射和JavaBean
- 反射和javaBean的练习
- 反射javabean
- JavaBean反射
- 反射&JavaBean
- 黑马程序员---反射和JavaBean(重点)
- 黑马程序员:Java学习笔记---数组反射和JavaBean
- JAVA之通过反射遍历JavaBean成员变量和方法
- Spring基础(IOC原理和反射机制+JavaBean)
- javaBean与反射
- javaBean与反射2
- 反射与JavaBean
- 浅谈 JavaBean与反射
- JavaBean的反射机制
- JavaBean属性方法反射
- 反射,内省与javaBean
- 多标签分类(multilabel classification )
- 【CatCms】1. 系统应用框架与IDE
- 关于Encode in UTF-8 without BOM
- Activity向Fragment中传值
- python问题之no direction
- JavaBean和反射
- canvas
- Leetcode-11. Container With Most Water
- 哪个蠢蛋写的烂代码?
- mysql error This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
- HashMap与TreeMap的区别
- 泛型通配符
- 微服务架构的分布式事务解决方案
- Sonatype Nexus 搭建Maven仓库