- 浏览: 117260 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
gtd03:
[b][/b][i][/i][u][/u]引用[*][img] ...
js 监听监键盘动作 -
tomfish88:
你用5条数据太少了,你用50000条你就看出差距了
多线程效率问题
package org.lxh.demo15.classinfodemo ;
import java.lang.reflect.Constructor ; // 导入构造方法的包
public class GetConstructorDemo01{
public static void main(String args[]){
Class<?> c1 = null ; // 声明Class对象
try{
c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
Constructor<?> con[] = c1.getConstructors() ; // 取得一个类中的全部构造
for(int i=0;i<con.length;i++){
System.out.println("构造方法:" + con[i]) ; // 输出构造,直接打印
}
}
};
package org.lxh.demo15.classinfodemo ;
import java.lang.reflect.Constructor ; // 导入构造方法的包
public class GetConstructorDemo02{
public static void main(String args[]){
Class<?> c1 = null ; // 声明Class对象
try{
c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
Constructor<?> con[] = c1.getConstructors() ; // 取得一个类中的全部构造
for(int i=0;i<con.length;i++){
Class<?> p[] = con[i].getParameterTypes() ; // 得到构造方法中的全部参数
System.out.print("构造方法:" ) ; // 输出构造,直接打印
System.out.print(con[i].getModifiers() + " ") ; // 得到修饰符
System.out.print(con[i].getName()) ; // 取得构造方法的名字
System.out.print("(") ;
for(int j=0;j<p.length;j++){
System.out.print(p[j].getName() + " arg" + i) ;
if(j<p.length-1){
// 判断此是否是最后一个参数
System.out.print(","); // 输出“,”
}
}
System.out.println("){}") ;
}
}
};
package org.lxh.demo15.classinfodemo ;
import java.lang.reflect.Constructor ; // 导入构造方法的包
import java.lang.reflect.Modifier ; // 导入构造方法的包
public class GetConstructorDemo03{
public static void main(String args[]){
Class<?> c1 = null ; // 声明Class对象
try{
c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
Constructor<?> con[] = c1.getConstructors() ; // 取得一个类中的全部构造
for(int i=0;i<con.length;i++){
Class<?> p[] = con[i].getParameterTypes() ; // 得到构造方法中的全部参数
System.out.print("构造方法:" ) ; // 输出构造,直接打印
int mo = con[i].getModifiers() ; // 得到所要的访问权限
System.out.print(Modifier.toString(mo) + " ") ; // 得到修饰符
System.out.print(con[i].getName()) ; // 取得构造方法的名字
System.out.print("(") ;
for(int j=0;j<p.length;j++){
System.out.print(p[j].getName() + " arg" + i) ;
if(j<p.length-1){
// 判断此是否是最后一个参数
System.out.print(","); // 输出“,”
}
}
System.out.println("){}") ;
}
}
};
package org.lxh.demo15.classinfodemo ;
import java.lang.reflect.Field ; // 导入构造方法的包
import java.lang.reflect.Modifier ; // 导入构造方法的包
public class GetFieldDemo{
public static void main(String args[]){
Class<?> c1 = null ; // 声明Class对象
try{
c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
{ // 本类属性
Field f[] = c1.getDeclaredFields() ; // 取得本类中的属性
for(int i=0;i<f.length;i++){
Class<?> r = f[i].getType() ; // 得到属性类型
int mo = f[i].getModifiers() ; // 得到修饰符的数字
String priv = Modifier.toString(mo) ; // 还原修饰符
System.out.print("本类属性:") ;
System.out.print(priv + " ") ;
System.out.print(r.getName() + " ") ; // 得到属性类型
System.out.print(f[i].getName()) ; // 输出属性名称
System.out.println(" ;") ;
}
}
{ // 公共属性
Field f[] = c1.getFields() ; // 取得本类中的公共属性
for(int i=0;i<f.length;i++){
Class<?> r = f[i].getType() ; // 得到属性类型
int mo = f[i].getModifiers() ; // 得到修饰符的数字
String priv = Modifier.toString(mo) ; // 还原修饰符
System.out.print("公共属性:") ;
System.out.print(priv + " ") ;
System.out.print(r.getName() + " ") ; // 得到属性类型
System.out.print(f[i].getName()) ; // 输出属性名称
System.out.println(" ;") ;
}
}
}
};
package org.lxh.demo15.classinfodemo ;
public class GetInterfaceDemo{
public static void main(String args[]){
Class<?> c1 = null ; // 声明Class对象
try{
c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
Class<?> c[] = c1.getInterfaces() ; // 以数组形式返回实现的全部接口
for(int i=0;i<c.length;i++){
System.out.println("实现的接口名称:" + c[i].getName()) ; // 输出接口名称
}
}
};
package org.lxh.demo15.classinfodemo ;
import java.lang.reflect.Method ; // 导入构造方法的包
import java.lang.reflect.Modifier ; // 导入构造方法的包
public class GetMethodDemo{
public static void main(String args[]){
Class<?> c1 = null ; // 声明Class对象
try{
c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
Method m[] = c1.getMethods() ; // 取得全部方法
for(int i=0;i<m.length;i++){
Class<?> r = m[i].getReturnType() ; // 得到返回值类型
Class<?> p[] = m[i].getParameterTypes() ; // 取得全部参数的类型
int xx = m[i].getModifiers() ; // 得到修饰符
System.out.print(Modifier.toString(xx) + " ") ; // 输出修饰符
System.out.print(r + " ") ;
System.out.print(m[i].getName()) ;
System.out.print("(") ;
for(int j=0;j<p.length;j++){
System.out.print(p[j].getName() + " " + "arg" + j) ;
if(j<p.length-1){
System.out.print(",") ;
}
}
Class<?> ex[] = m[i].getExceptionTypes() ; // 取出异常
if(ex.length>0){
System.out.print(") throws ") ;
}else{
System.out.print(")") ;
}
for(int j=0;j<ex.length;j++){
System.out.print(ex[j].getName()) ;
if(j<p.length-1){
System.out.print(",") ;
}
}
System.out.println() ;
}
}
};
package org.lxh.demo15.classinfodemo ;
public class GetSuperClassDemo{
public static void main(String args[]){
Class<?> c1 = null ; // 声明Class对象
try{
c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
Class<?> c2 = c1.getSuperclass() ; // 取得父类
System.out.println("父类名称:" + c2.getName()) ;
}
};
package org.lxh.demo15 ;
interface China{ // 定义China接口
public static final String NATIONAL = "China" ; // 定义全局常量
public static final String AUTHOR = "李兴华" ; // 定义全局常量
public void sayChina() ; // 无参的,没有返回值的方法
public String sayHello(String name,int age) ; // 定义有两个参数的方法,并返回内容
}
public class Person implements China{
private String name ;
private int age ;
public Person(){ // 无参构造
}
public Person(String name){
this.name = name ; // 设置name属性
}
public Person(String name,int age){
this(name) ;
this.age = age ;
}
public void sayChina(){ // 覆写方法
System.out.println("作者:" + AUTHOR + ",国籍:" + NATIONAL) ;
}
public String sayHello(String name,int age){
return name + ",你好!我今年:" + age + "岁了!" ;
}
public void setName(String name){
this.name = name ;
}
public void setAge(int age){
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
};
- 031503_【第15章:JAVA反射机制】_反射应用——取得类的结构笔记.PDF (444 KB)
- 下载次数: 2
发表评论
-
ServerSocket 多线程服务器开发
2011-04-24 16:24 1674package socket; import j ... -
InetAddress 获得IP
2011-04-24 15:43 1493import java.net.InetAddress ... -
接口的作用 宠物商店
2011-04-24 15:14 1167package PetShopDemo; inte ... -
Arrays
2011-04-24 14:15 769package ArraysTest; impor ... -
Cloneable 对象克隆
2011-04-24 14:08 1057class Person implements Clon ... -
System
2011-04-24 13:59 798package SystemTest; publi ... -
Collections
2011-04-24 13:40 1364import java.util.Collections ... -
TreeSet对象排序的方法
2011-04-24 13:09 1476package set; import java. ... -
HashMap 的两种遍历方式
2011-04-24 12:35 758public static void main(Str ... -
ENUMERATION接口
2011-04-23 14:51 787很少用 import java.util.Vec ... -
ListIterator
2011-04-23 14:44 9701 只能有List实例化 2 必须先有头到尾,才能由尾到头 ... -
Iterator
2011-04-23 14:36 1059import java.util.List ; imp ... -
List.subList 得到的新数组地址指向旧数组
2011-04-23 14:22 1063public static void main(Str ... -
SortedSet
2011-04-23 13:50 859import java.util.SortedSet ; ... -
HashSet TreeSet
2011-04-23 13:43 791import java.util.HashSet ; ... -
LinkedList 队列
2011-04-23 13:36 874import java.util.LinkedList ... -
List Vector
2011-04-23 13:14 758import java.util.ArrayList ; ... -
collection 接口
2011-04-23 12:09 679图片 -
HashSet 对对象去重
2011-04-21 23:00 3164import java.util.Set ; impo ... -
Properties 属性 properties xml
2011-04-21 22:40 932import java.util.Properties; ...
相关推荐
1. **获取枚举类**:要通过反射获取枚举类,首先需要得到其Class对象。这可以通过`Class.forName()`方法完成,提供枚举类的全限定名作为参数。 ```java Class<Color> colorClass = (Class) Class.forName(...
### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...
在本篇中,我们将深入探讨如何通过反射获取类的实例,以及相关的源码分析。 首先,我们需要了解`java.lang.Class`类。它是Java中的一个核心类,代表运行时的类信息。我们可以通过以下几种方式获取`Class`对象: 1....
Java反射API提供了一系列类和接口,如`Class`、`Field`、`Method`等,它们让我们能够在运行时动态地获取类的信息,包括类的结构、方法签名以及字段等。这为编程提供了极大的灵活性,尤其是在处理第三方库或者进行元...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部结构,包括类的属性、方法以及构造器。本文将深入探讨如何使用反射来获取父类中的所有属性和方法,这对于理解和调试...
反射获取jar文件中的类 在 Java 中,反射是一种强大的技术,允许我们在运行时检查和修改类的结构和行为。今天,我们将学习如何使用反射获取 jar 文件中的类、方法等信息。 反射机制 在 Java 中,反射机制是指在...
本文将深入探讨如何通过反射获取类的自定义特性,并创建和使用自定义特性类。 首先,我们需要理解什么是特性(Attribute)。在.NET框架中,特性是一种元数据,可以附加到代码元素(如类、方法、属性等)上,为...
通过反射,可以动态地获取类的信息并操作其字段、方法以及构造器等。本文将详细介绍如何利用反射机制访问和实例化一个私有的内部类,并通过代码示例进行说明。 #### 二、反射概述 反射是Java语言提供的一种能够在...
本文将深入探讨如何通过反射机制来获取自定义注解以及其在字段上的应用。 首先,我们需要了解什么是自定义注解。自定义注解是以`@`开头,后跟自定义的名称。定义一个注解的基本结构如下: ```java import java....
总结来说,Java反射提供了一种强大的机制,允许我们在运行时检查和操作类的结构和行为。通过封装反射帮助类,我们可以使这种能力更加易于使用,提高代码的可读性和可维护性。在实际开发中,反射常用于插件系统、序列...
通过反射,我们可以动态地获取类的信息,包括类名、属性、方法、构造器等,并能创建对象、调用方法、访问字段,甚至修改私有成员。这在很多场景下非常有用,如插件系统、框架开发、元数据处理等。 标题“反射工具可...
这个“VB.NET 反射类属性名称”主题聚焦于如何利用反射来获取或设置类中特定属性的值,尤其是当我们只知道属性的名称,而没有直接的引用时。 反射的基本原理是通过System.Reflection命名空间中的类来实现的。在这个...
### 反射技术在Java中的应用:根据类的完全限定名获取其实例 #### 引言 在Java编程中,反射是一种强大的工具,允许程序在运行时检查和修改其结构和行为。通过反射,我们可以根据类的完全限定名(Fully Qualified ...
在Java中,反射机制是在程序运行时,通过Class对象来获取类的结构信息,包括类名、字段、方法、构造器等,并能直接操作这些元素。类的加载完成后,JVM会在方法区创建一个对应的Class对象,这个对象就代表了类的所有...
在本教程中,我们将深入探讨如何利用反射来获取运行时类的属性结构及其内部结构。 首先,让我们了解什么是反射。在Java中,反射机制允许我们通过类名(String类型)动态地创建对象,访问类的私有成员,调用私有方法...
通过`java.lang.Class`类和相关的API,我们可以获取类的结构信息并进行操作。 2. **ReflectionUtils简介** ReflectionUtils通常是一个自定义的工具类,包含了一系列静态方法,用于简化和封装反射操作,避免了直接...
本教程将深入讲解如何利用反射机制来获取Java类的方法结构。 首先,我们要了解什么是类的结构。在Java中,一个类的结构包括它的类名、属性(字段)、构造器以及方法。当我们的程序运行时,如果需要在运行时获取这些...
这个教程"652.650.JAVA基础教程_反射-获取运行时类的方法的内部结构(652)"显然是针对Java反射机制的深入学习,特别是关注如何获取类的方法及其内部结构。以下是对这个主题的详细解释。 1. **反射的基本概念** - ...
内容概要 Java的反射机制是指在运行时通过分析类的信息实现动态调用类的方法和访问类的属性...掌握反射机制的目标是能够在运行时获取类的信息,并灵活地利用这些信息来完成所需的操作,以增加程序的灵活性和可扩展性。
在编程领域,反射是一种强大的工具,它允许程序在运行时检查自身并操作其内部结构,如类、对象、方法和属性。在这个特定的场景中,"HardwareInformation_反射_" 提到的是利用反射来获取系统硬件信息的过程。在Java、...