Java反射机制主要提供下面几种用途:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
以下,我们就以动态创建对象为例,通过代码来解释一下反射:
public class ReflectionTest {
public static void main(String[] args) throws Exception {
// 建立学生对象
Student student = new Student()
// 为学生对象赋值
student.setStuName("Wanggc")
student.setStuAge(24)
// 建立拷贝目标对象
Student destStudent = (Student) copyBean(student)
// 输出拷贝结果
System.out.println(destStudent.getStuName() + ":"
+ destStudent.getStuAge())
}
/**
* 拷贝学生对象信息。
*
* @param from
拷贝源对象
* @param dest
拷贝目标对象
* @throws Exception
例外
*/
private static Object copyBean(Object from) throws Exception {
// 取得拷贝源对象的Class对象
Class<?>fromClass = from.getClass()
// 取得拷贝源对象的属性列表
Field[] fromFields = fromClass.getDeclaredFields()
// 取得拷贝目标对象的Class对象
Object ints = fromClass.newInstance()
for (Field fromField : fromFields) {
// 设置属性的可访问性
fromField.setAccessible(true)
// 将拷贝源对象的属性的值赋给拷贝目标对象相应的属性
fromField.set(ints, fromField.get(from))
}
return ints
}
}
java的反射用法:(异常请自行处理)
①找到类:Class cl = Class.forName("java.util.Date")
②创建对象(要求这个类中含有空参数的构造方法):Object obj = cl.newInstence()
③根据名称和参数找方法:Method method1 = cl.getMethod("getTime")//如果没有参数不用写第二个参数如果有参数的如:Method method2 = cl.getMethod("setTime",long.class)
④在某个对象上面执行方法,Object result = method1.invoke(obj)//如果有参数的Object result = method2.invoke(obj,21317362721)
执行的方如果有返回值,将返回值返回,否则返回null
java开发工程师岗位职责:
1、负责公司网站开发和维护;
2、负责对网站进行实施,测试;
3、负责现有网站的维护和升级;
4、负责解决开发过程中的技术问题;
5、负责网站开发文档编写工作;
6、统一代码风格、监督团队开发、落实测试、验收代码质量;
7、参与软件系统设计,能编写代码。