java 中的反射API 暑假第十天

 
java 中的反射API   反射API 当我们在开发Debugger的时候用到  反射API可以获得一个类的内部构造  定义的成员 方法 构造函数 。。。

java.lang.reflect.*  必须导入因为java.lang会自动导入但是 子包却不会    这个包中有一堆类  如 Method  Field  Construction类 等等

java.lang.Class  中的函数可以获得 这些类的数组  例如getDeclaredFields() 返回声明的 所有 变量的一个Field 数组
                                                    getDeclaredConstructions()返回声明的所有的Construction类构造函数的数组
                                                    getDeclaredMethods() 返回所有的Method方法  我们可以利用System.out.println()输出类
                                                   
 

*/
import java.lang.reflect.* ;
class Test
{
 public static  void main(String[]args)  throws Exception   //声明抛出异常 那么我们就不用捕捉了
 {
  if(args.length!=1)
  System.exit(-1);
  else
  {
   Class c1= Class.forName(args[0]);
   Constructor []cons=c1.getDeclaredConstructors(); //获得定义的构造函数
   Method []meds=c1.getDeclaredMethods();  //获得定义的方法
   Field []fies=c1.getDeclaredFields() ;//获得定义的字段也就是变量
   for(int n=0;n<cons.length;n++)
         System.out.println(cons[n]);  //输出定义的构造函数
   for(int n=0;n<meds.length;n++)
         System.out.println(meds[n]);  //输出定义的方法
   for(int n=0;n<fies.length;n++) 
         System.out.println(fies[n]);   //输出定义的成员变量  
  }
 }
}

时间: 2024-08-02 19:23:50

java 中的反射API 暑假第十天的相关文章

java笔记十:java中的反射

Java中,反射是一种强大的工具.它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接.反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活的应用的主要工具.但需注意的是:如果使用不当,反射的成本很高. Java的类反射所需要的类并不多,它们分别是:Field.Constructor.Method.Class.Object,下面我将对这些类做一个简单的说明.Field类:提供有关类或接

Java中的反射机制

反射,reflection,听其名就像照镜子一样,可以看见自己也可以看见别人的每一部分.在java语言中这 是一个很重要的特性.下面是来自sun公司官网关于反射的介绍: Reflection is a feature in the Java programming language. It allows an executing Java program to examine or "introspect" upon itself, and manipulate internal pr

java中的反射的变量定义问题

问题描述 java中的反射的变量定义问题 新人初学,还望各位能多多帮助 我在学习反射的过程中,遇到这样一个问题 String s1 = new String (new StringBuffer("abc")); 这条语句我看了下JDK文档,发现String的构造函数中有一个构造方法的参数是StringBuffer的对象,然后又看了看StringBuffer的定义,发现这条语句等于 String s1 = "abc"; 为什么要这样写呢, 还有 Constructor

java中使用反射获取pojo(实体)类的所有字段值

       说起反射,不得不说它实在是太强大了,通过反射就可以轻轻松松拿到各种东东,如果你想在项目中解除对某个类的依赖,可以考虑用反射.        今天跟大家分享的是通过java中的反射,获取pojo类的所有字段值.        为什么要做这个操作的呢?主要是为了重写实体类的toString方法.有人会说,直接重写toString方法,返回字段.toString()的字符串不就行了.这么做的确可以,但是如果你的pojo类有上百个,上千个,你还要一个一个改吗?所以我们需要从新的方向去解决.

java-早绑定是不是Java中的反射的运行原理啊?

问题描述 早绑定是不是Java中的反射的运行原理啊? 解决方案 恰恰相反,反射的原理和运行时绑定类似,在运行时检索程序的元信息(metadata),其中包含类型.成员等等,然后动态调用. 解决方案二: Java 运行原理JAVA运行原理Java的运行原理

java中利用反射调用另一类的private方法的简单实例_java

我们知道,Java应用程序不能访问持久化类的private方法,但Hibernate没有这个限制,它能够访问各种级别的方法,如private, default, protected, public. Hibernate是如何实现该功能的呢?答案是利用JAVA的反射机制,如下:  import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectDemo

浅析Java中的反射机制原理

       反射反射,程序员的快乐!        Java中反射机制使用的还是比较广泛的,系统的灵活性.可扩展性大都都是通过反射等方式来加载外部插件,使得系统与插件解耦的同时,增加了功能.但是很多人都只是会用,却是不知道它的实现机制,今天就由我来带大家揭开反射机制的神秘面纱.        Java中是用Class.forName(classname)来反射类. package com.java.reflecttest; import com.java.dbtest.DBTest; /**

在java中实现 AutoCAD api

因为在项目中需要从autoCAD 的dwg文件中提取标题框中的属性插入到数据库中实现图纸的批量入库. 一开始在网上搜索这方面的资料,其中有一些控件可以脱离autoCAD系统提取的,但都是要收费的.比如openDwg是用的比较多的.但是要交费成为会员才能使用.于是想自己分析DWG的文件格式,然后自己写个控件出来.找到了DWG文件格式说明.一看,吓一跳,如此的复杂,自己写是不现实的. 只好找其他的门路了.后来知道了ActiveX Automation,可以通过 ActiveX Automation操

Java中的反射的应用

在正常情况下,需要先有一个类的完整路径引入之后才可以按照固定的格式产生实例话对象,但是在Java中也允许通过一个实例话对象找到一个类的完整信息.那么这就是Class类的功能. 实际上类是Java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,即可以通过对象的反射求出类的名称. 实例化Class类,获得字节码文件的方法有三种: 第一种:通过forName()方法;第二种:类.class第三种:对象.getClass() package toto.learn; class X1{} pub