`
hold_on
  • 浏览: 452124 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 用反射获取内部类构造方法

    博客分类:
  • java
阅读更多
package com.zl.invoke;

import java.lang.reflect.Constructor;

public class A {

	public A() {

	}

	public A(String str) {

	}

	class Inner {
		private String name = "Inner";

		public Inner() {
		}

		public Inner(String na) {
			name = na;
		}
	}

	public static void main(String args[]) {

		Object obj = getObject("com.zl.invoke.A");
		System.out.println("obj: " + obj.toString());
		Object innerObj = getObjectFromInnerClass("com.zl.invoke.A$Inner");
		System.out.println("innerObj : " + innerObj.toString());
	}

	public static Object getObject(String className) {
		Object obj = null;
		try {
			Class c = Class.forName(className);
			if (c != null) {
				Constructor constructor = c
						.getDeclaredConstructor(new Class[] { String.class });
				if (constructor != null) {
					obj = constructor.newInstance("dlafjdf");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return obj;
	}

	public static Object getObjectFromInnerClass(String clsName) {
		Object obj = null;
		try {
			Class c = Class.forName(clsName);
			if (c != null) {
				Constructor constructor = c.getDeclaredConstructor(new Class[] {
						A.class, String.class });
				if (constructor != null) {
					obj = constructor.newInstance(new A(), "dlafjdf");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return obj;
	}
}

 

关键代码用红色字体标注:

  获取内部类构造方法时,需要将其外部类的类对象作为参数传进去

Constructor constructor = c.getDeclaredConstructor(new Class[] {

A.class, String.class });

同样实例化内部类时,也需要将外部类对象作为参数传进去

obj = constructor.newInstance(new A(), "dlafjdf");

分享到:
评论

相关推荐

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    3.2.1 Java反射机制的概念 Java反射机制在Java运行状态中,对于任意一个类,我们都能够知道这个类的所有属性和方法;, 对于任意一个对象,我们都能够调用它的任意一个方法;。 这种动态获取的信息以及动态调用对象...

    Java开发技术大全(500个源代码).

    DumpMethods.java 使用反射机制来获取类中的方法 getClassName.java 利用反射机制获取类的名字 invokeConstructor.java 利用反射机制调用构造器 invokeMethod.java 利用反射机制调用成员方法 listConstructors....

    java反射机制原理详解.docx

    o可以获取对象的运行时类的完整结构(属性、方法、构造器、内部类、、、)(理解) o调用对应的运行时类的指定的结构(属性、方法)(重点) 在反射以前,如何创建一个类的对象,并调用其中的方法属性

    Java 基础核心总结 +经典算法大全.rar

    用泛型表示类 用泛型表示接口泛型方法 泛型通配符 反射 Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 枚举和普通类-样枚举神秘之处 枚举类 I/O File 类 基础 IO 类和相关方法InputStream ...

    JAVA_API1.6文档(中文)

    java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...

    java培训机构内部预习文档

    chp1.语言基础 基本语法、标识符、命名规范、八种基本类型、基本操作符、运算符 chp2.选择结构 if 、if else、if else if else、switch case chp3.循环控制 while、do while、...反射 类对象及其获取方式,反射常用方法

    Java经典编程源码基础例程300.zip

    实例078 利用反射重写toString()方法 119 第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币金额大写格式 123 实例081 String类格式化当前日期 125 实例082 字符串大小写转换 1

    java api最新7.0

    里面列出了Java jdk 1.7的所有类及其使用方法! Java SE Platform 软件包: java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有...

    疯狂JAVA讲义

    学生提问:为什么静态内部类实例方法也不能访问外部类的实例属性呢? 207 学生提问:接口里是否能定义内部接口? 208 6.7.3 使用内部类 208 学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在...

    Java 1.6 API 中文 New

    里面列出了,Java的所有类及其使用方法! Java SE Platform 软件包: java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 ...

    java面试题进阶版附答案.docx

    四、反射机制:解释了Java中的反射机制,包括在运行时动态获取类的信息,操作类的属性、方法和构造函数等功能。 五、泛型和泛型方法:介绍了Java中的泛型的概念,以及通过使用泛型实现类型安全和重用性的方式。 六...

    JAVA面试题最全集

    一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握内部类和接口的概念 54.StringTokenizer类的使用 55.数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? ...

    java基础案例与开发详解案例源码全

    15.2 使用Java反射机制414 15.2.1 获取类型信息414 15.2.2 创建对象417 15.2.3 调用方法419 15.2.4 访问成员变量的值421 15.2.5 操作数组422 15.3 反射与动态代理424 15.3.1 静态代理424 15.3.2 动态代理426 15.4 本...

    JavaAPI1.6中文chm文档 part1

    java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...

    21天学通Java-由浅入深

    240 12.2.1 创建局部内部类 240 12.2.2 在局部内部类中访问外部类成员变量 240 12.2.3 在局部内部类中访问外部类的局部变量 241 12.2.4 静态方法中的局部内部类 243 12.3 静态内部类 244 12.3.1 创建静态内部类 244 ...

    基于Java的XML解析与反射设计模式.doc

    基于Java的XML解析与反射设计模式 摘要:随着计算机时代的蓬勃发展,internet的普及给社会以及人民的生活带来了巨 大的影响。与此同时,b/s结构的多系统相互访问技术应时代的发展也如雨后春笋般不断 涌现出来,相应...

    Java开发技术大全 电子版

    9.6利用反射获取运行时类信息293 9.6.1使用isInstance()方法判断所属类294 9.6.2获取成员方法信息295 9.6.3获取构造方法信息296 9.6.4获取类的成员属性297 9.6.5根据方法的名称来执行方法299 9.6.6创建新的...

    JavaAPI中文chm文档 part2

    java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...

Global site tag (gtag.js) - Google Analytics