package common;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String sayHello() {
return "hello";
}
public String sayHello(String name) {
return name + ", hello";
}
public String sayHello(String name, Date date) {
return name + ", hello at " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
}
}
package reflect;
import java.util.Date;
import common.Demo;
public class Test1 {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("common.Demo");
Demo demo = (Demo) clazz.newInstance();
demo.setName("java reflect");
System.out.println(demo.getName());
System.out.println(demo.sayHello());
System.out.println(demo.sayHello("java world"));
System.out.println(demo.sayHello("java world", new Date()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
package reflect;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Date;
public class Test2 {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("common.Demo");
Object obj = clazz.newInstance();
Field f = clazz.getField("name");
f.set(obj, "java");
Method m0 = clazz.getMethod("getName", new Class[0]);
System.out.println(m0.invoke(obj, new Object[0]).toString());
Method m1 = clazz.getMethod("sayHello", new Class[0]);
System.out.println(m1.invoke(obj, new Object[0]).toString());
Method m2 = clazz.getMethod("sayHello", new Class[]{ String.class });
System.out.println(m2.invoke(obj, new Object[] { "java world" }).toString());
Method m3 = clazz.getMethod("sayHello", new Class[]{ String.class, Date.class });
System.out.println(m3.invoke(obj, new Object[] { "java world", new Date() }).toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包中的`Constructor`、`Method`和`Field`等类。通过反射,我们可以动态地获取类的信息(如类名、属性、方法),甚至可以在运行时创建和调用类的...
免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者
虽然Java反射提供了强大的功能,但在实际开发中也需要谨慎使用。因为反射会降低程序的性能,并且可能引入安全隐患。例如,如果在不安全的环境中使用反射来获取私有成员,可能会导致敏感数据泄露。 #### 五、结论 ...
Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本教程中,我们将深入...请参考`java_base10_reflect.ppt`来深入学习这一强大而复杂的主题。
4. 动态代理:Java的`java.lang.reflect.Proxy`类可以生成动态代理类,实现接口的动态方法调用。 总的来说,Java反射为开发者提供了一种强大的工具,使我们能够在运行时探索和操纵类的结构和行为,极大地扩展了Java...
JAVA REFLECT (java 反射) 取得类的继承结构 - 类所在的包; |- public Package getPackage() - 类的声明方式; |-取得全类名:public String getName() |-只取类名: public String getSimpleName() - 类所继承...
标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...
Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类的信息,包括类名、属性、方法等,并可以动态地创建对象和调用方法。反射在很多场景下非常有用,比如在框架开发、插件系统、元数据驱动编程等...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有高度的灵活性和动态性,但同时也增加了程序的复杂性和...
`java reflect utils`通常是指一些工具类或库,用于简化和增强Java反射机制的使用。在Java编程中,反射机制主要用于在运行时动态地获取类的信息(如类名、属性、方法等)以及创建和调用对象。 **1. Java反射的基本...
在Java中,`java.lang.reflect`包提供了对反射的支持。 反射的基础知识包括以下几个核心概念: 1. **Class对象**:每个类在运行时都有一个对应的Class对象,它包含了该类的所有信息。我们可以通过`Class.forName()...
本实例演示了如何使用Java反射API向一个限定类型的`ArrayList<Integer>`中添加一个字符串元素。通常情况下,直接向此类集合中添加不同类型的元素(如字符串)会导致编译错误。但通过反射API可以绕过类型检查限制,...
java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码
要使用反射,你需要导入`java.lang.reflect`包中的类,如`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类的元数据、构造器、方法和字段。通过`Class`的`forName()`方法,你可以根据类名获取到对应的`...
在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...
主要由java.lang.reflect.Proxy和java.lang.reflect.InvocationHandler接口组成。 1. **Proxy类**:Proxy类的newProxyInstance()方法用于创建动态代理对象,它需要一个ClassLoader、一个接口数组和一个...