`
xiaoqzai414
  • 浏览: 15871 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

反射机制的理解

阅读更多
今天由于马老师临时有事,今天改为星期天

今天复习了昨天讲的反射方面的知识:

/simplejee/src/com/yuqiaotech/simplejee/javase/reflect/ReflectSample.java
package com.yuqiaotech.simplejee.javase.reflect;

import java.lang.reflect.*;
/**
* 1、获取类的相关信息
* 2、知道类名,实例化出对象
* 3、动态调用实例的方法
*
*
*/
public class ReflectSample {
public static void main(String[] args) throws Exception {
classInfo("com.yuqiaotech.simplejee.dao.BaseDao");
newInstanceAndIncokeMethod();
}
private static void classInfo(String className) throws ClassNotFoundException{
Class clazz = Class.forName(className);

System.out.println("all implemented interfaces");
Class[] allInterfaces = clazz.getInterfaces();
for (int i = 0; i < allInterfaces.length; i++) {
System.out.println(i+"."+allInterfaces[i]);
}
System.out.println("all super classes");
Class allSuperClasses = clazz.getSuperclass();
int i = 0;
while(allSuperClasses != null){
System.out.println(++i+"."+allSuperClasses);
allSuperClasses = allSuperClasses.getSuperclass();
}
System.out.println("methods");
Method[] methods = clazz.getMethods();
for (int j = 0; j < methods.length; j++) {
Method m = methods[j];
System.out.println(j+"."+m.getName());
}
System.out.println("getConstructors");
int k = 0;
Constructor[] cs = String.class.getConstructors();
for (Constructor c : cs) {
System.out.println(++k+"."+c);
}
}
private static void newInstanceAndIncokeMethod() throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException{
class Point{
int x;
int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
public Point(){
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public double getDistant(){
return getDistant(0,0);
}
public double getDistant(int x, int y){
int x1 = this.x-x;
int y1 = this.y - y;
return Math.sqrt(x1*x1 + y1*y1);
}
public String toString(){
return "x="+x+",y="+y;
}

}
//instance
Class[] argClasses = new Class[] {int.class, int.class};
//Point.class == Class.forName("Point");
Constructor c = Point.class.getConstructor(argClasses);
Object[] args = new Object[] {3, 4};
Object o = c.newInstance(args);//Point o = new Point(3,4);
System.out.println(o);
//invoke method
Method m = Point.class.getMethod("getDistant", null);
Double result = (Double)m.invoke(o, null);//o.getDistantToOrigin();
System.out.println("result="+result);
Method m2 = Point.class.getMethod("getDistant", new Class[]{int.class,int.class});
Double result2 = (Double)m2.invoke(o, new Integer[]{5,8});//o.getDistantToOrigin(5,8);
System.out.println("result2="+result2);
}
}

运用java反射机制能够知道类名而不实例化对象的状态下,获得对象的属性或调用方法。一般都是在配置文件中才用的。hibernate的映射文件,spring的配置文件都是通过反射做的。

今天还看了一下MVC设计模式的视频和监听器的视频。

分享到:
评论

相关推荐

    JAVA反射机制的简单理解

    Java反射机制是Java语言提供的一种强大工具,它允许在程序运行时动态地获取类的信息以及对类的对象进行操作。在Java中,静态编译时类型检查确保了代码的稳定性,但有时我们需要在运行时根据需求动态地创建对象、调用...

    java面试题--反射机制

    这是因为Java反射机制不仅是Java语言的一项重要特性,也是理解Java动态特性的关键所在。通过本文,我们将深入探讨Java反射机制的核心概念、基本原理及其应用场景。 #### 二、Java反射机制简介 Java反射机制允许...

    java反射机制简单理解

    Java 反射机制简单理解 Java 反射机制是一种强大的机制,它允许程序在运行时检查和修改自身的结构和行为。Java 反射机制简单理解,非常容易理解的 Java 反射机制。 Java 反射机制的主要应用场景有两种:一种是 ...

    反射机制和类加载机制学习总结

    ### 反射机制详解 #### 一、反射机制概述 反射是Java的一项核心特性,它使得Java程序在运行时能够动态地获取类的信息,并且能够直接操作这些信息。这种能力在许多其他编程语言中并不常见,例如在Pascal、C或C++中...

    java反射机制讲解

    Java反射机制是Java语言提供的一种强大的能力,它允许我们在运行时检查类的信息并动态地创建和操作对象。这种机制使得程序具有更高的灵活性和...总的来说,理解并熟练运用Java反射机制是提升Java编程技能的关键一步。

    Java中的反射机制

    ### Java中的反射机制 #### 一、反射的概念 反射的概念最早由Smith于1982年提出,是指程序能够访问、检测和修改其自身状态或行为的能力。这一概念的引入促进了计算机科学领域对反射性的研究,并迅速被应用于程序...

    java反射机制原理

    Java反射机制是Java编程语言中的一个核心特性,...通过深入理解和合理运用反射机制,开发者可以解决许多复杂问题,提高代码的灵活性和可维护性。在实际编程中,我们需要权衡其优势和潜在的缺点,合理选择是否使用反射。

    java反射机制demo

    给同事写的反射机制的用法,非常简单易用,大家一看就懂。也便于初学者对反射机制的理解 资源免费提供大家下载,如有疑问,可以直接咨询我

    Qt 使用QMetaObject实现反射机制代码demo

    下面我们将通过分析给定的文件名来理解如何在Qt中使用QMetaObject实现反射机制。 首先,我们看到几个`.cpp`和`.h`文件,这些是C++的源代码和头文件。例如,`Person.cpp`和`Person.h`可能定义了一个名为`Person`的类...

    利用java反射机制的建议计算器源码

    在这个“利用java反射机制的建议计算器源码”中,我们将深入探讨如何使用反射来构建一个可扩展的计算器,帮助新手更好地理解这一概念。 首先,让我们解释什么是反射。在Java中,反射机制允许我们获取类的信息(如...

    Java反射机制 Java反射机制

    ### Java反射机制详解 #### 一、Java反射机制概述 Java反射机制是Java语言的一个重要特性,它允许程序在运行时获取类的信息并操作对象。Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用...

    AOP动态代理(反射机制)

    AOP(Aspect Oriented Programming,面向切面编程)是一种编程范式,旨在提供一种方法来组织和模块化系统中的...通过阅读《AOP动态代理(反射机制)》这本书,你可以深入理解这些概念,并通过丰富的示例掌握其实现方法。

    java学习资料-反射机制深入理解剖析

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这个特性使得Java具有高度的灵活性和...理解并掌握反射机制,对于提升Java编程技能和解决复杂问题具有重要意义。

    java反射机制原理和反射机制总结

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。这一机制的核心在于`java.lang.Class`类...学习和理解反射机制对于深入理解Java以及开发复杂系统至关重要。

    java的反射机制及其实际应用

    ### Java的反射机制及其实际应用 #### 一、引言 Java作为一种强大的编程语言,提供了许多高级特性,其中反射机制尤为突出。通过反射,开发者可以在运行时动态地获取类的信息并操纵类的行为,从而实现更加灵活和...

    Java反射机制

    9. **分析Java反射Class类型的源代码**:深入理解反射机制的工作原理,了解Class文件的结构以及JVM如何加载类对象以支持反射操作。 #### 四、Java反射原理分析 1. **Class文件结构**:每个编译后的Java类都会生成...

    java反射机制学习笔记+反射机制实操案例

    1. 通过案例理解反射机制: 在给定的案例中,我们看到了如何使用反射将对象转换为JSON字符串。首先,我们通过`Class`类获取对象的类信息,然后遍历该类的所有公共方法,找到以`get`开头的方法(通常是getter方法)...

    C++反射机制

    ### C++反射机制详解 #### 引言:C++与反射机制 在现代软件开发领域,反射机制(Reflection)作为一种强大的编程技术,被广泛应用于多种编程语言中,如C#、Java等。它允许程序在运行时检查和修改自身结构与行为,...

    Java反射机制的实现_Reflection

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。...在理解和掌握反射机制后,开发者可以更好地利用这一工具来解决复杂的问题,设计出更加灵活和强大的系统。

Global site tag (gtag.js) - Google Analytics