`
hold_on
  • 浏览: 455691 次
  • 性别: 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反射,获取所有属性、方法以及List集合类

    本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...

    反射私有内部类的例子

    // 使用反射获取私有内部类的Class对象 Class clss = Class.forName("org.wind.oms.fm.main.DefaultHandler$PThread"); // 获取私有内部类的构造器 Constructor conn = clss.getDeclaredConstructors()[0]; ...

    JAVA反射机制的入门代码

    Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...

    讲解Java中如何构造内部类对象以及访问对象

    本篇将主要讨论如何构造内部类对象以及如何通过反射来访问它们。 首先,我们来看一个简单的内部类示例: ```java package javalang; public class Outer { public static class Inner1 { // ... } } ``` 在这...

    java反射实例

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有高度的灵活性和动态性,尤其在处理元数据、框架设计、...

    java反射 java反射 java反射java反射

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...

    java反射机制学习(二):通过反射获取构造方法并实例化对象

    在本篇文章中,我们将深入探讨如何通过反射获取构造方法并实例化对象,这对于理解和使用Java的动态性至关重要。 首先,我们需要了解`java.lang.Class`类,它是Java中所有类的通用表示。当我们知道一个类的名字...

    Java反射调用方法

    Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息,包括但不限于获取类的方法、字段、构造器等,并能动态调用方法和修改字段值。这个特性使得Java具有了更...

    JAVA_内部类_反射机制

    匿名内部类的定义通常紧跟在`new`关键字之后,且不能包含构造方法,也不能有静态成员或方法。它们同样遵循局部内部类的规则,只能在一个作用域内创建一个实例。 反射机制是Java提供的一种强大的工具,它允许程序在...

    java反射基本方法测试

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类、接口、字段和方法的信息,使得我们可以在不知道对象具体...

    Java反射机制的使用和学习方法

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。这一机制对于理解和实现高级框架、动态代理、元数据处理等场景至关重要。以下是对Java反射机制的详细说明:...

    java之反射优化(缓存思路)源码

    当频繁地使用相同的反射操作时,如获取Class对象、构造函数或方法,预加载这些信息并存储在一个缓存中可以显著提高性能。这种缓存机制减少了重复的JVM查找,从而降低了运行时的开销。 缓存思路通常有以下几种实现...

    Java反射机制总结

    以下是一个简单的Java反射示例,展示了如何使用反射来获取类的信息: ```java import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try { Class c = Class.for...

    java反射获取参数.zip

    这个“java反射获取参数.zip”文件很可能是关于如何利用Java反射获取类的属性、方法,特别是对于List集合类的操作。 首先,我们来详细解释Java反射的基本概念。在Java中,每个类都有一个Class对象,这个对象包含了...

    java例子 java反射

    在给出的“JavaClass”示例中,可能包含了一个或多个展示如何使用Java反射的代码片段,可能涉及到创建`Class`对象、获取和调用方法、访问字段等内容。通过分析这些例子,你可以更深入地理解Java反射的使用方式及其在...

    java 反射的使用

    接着,创建一个实现了这些方法的匿名内部类,并通过反射的`newInstance()`方法创建实例。 6. **委托代理** - 委托代理是一种设计模式,通常用于动态构建代理对象,实现代理模式。在Java中,可以使用`java.lang....

    java中反射的概念

    以下是一个简单的反射示例,展示了如何使用反射获取类的方法信息: ```java import java.lang.reflect.Method; public class ReflectionDemo { public static void main(String[] args) { try { Class<?> clazz...

    JAVA 反射机制应用

    Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是java.lang.Class,它代表了运行时的类信息。通过Class对象,我们...

    Java反射获取私有构造函数、属性、方法

    Java 反射机制获取私有构造函数的原理是通过获取类的 Constructor 对象,然后调用其 newInstance 方法来创建类的实例。例如,以下代码演示了如何获取私有构造函数: ```java Constructor[] cts = Class.forName(...

    java r反射源代码

    Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法的信息。在Java中,反射是通过java.lang.reflect包提供的类和接口实现的,这些工具允许我们动态地访问类的私有成员、...

Global site tag (gtag.js) - Google Analytics