Java 中的反射和 new 的区别是什么?(附示例代码)

您所在的位置:网站首页 Java中的new Java 中的反射和 new 的区别是什么?(附示例代码)

Java 中的反射和 new 的区别是什么?(附示例代码)

#Java 中的反射和 new 的区别是什么?(附示例代码)| 来源: 网络整理| 查看: 265

在 Java 中,反射和 new 都可以用于创建对象,但它们的实现机制不同。具体区别如下:

new 关键字是在编译期确定的,它会在堆内存中为对象分配内存并进行初始化。而反射是在运行时动态地获取类信息并进行操作,它可以在程序运行期间加载、检查和修改类。 使用 new 创建对象时,需要明确对象的类型,而使用反射创建对象时,可以在运行时动态地获取类的信息并创建对象,不需要在编译期间确定类的类型。

下面是一个示例代码,演示了通过 new 和反射分别创建对象的过程:

public class MyClass { private int num; private String str; public MyClass(int num, String str) { this.num = num; this.str = str; } public void print() { System.out.println("num: " + num + ", str: " + str); } } public class Main { public static void main(String[] args) throws Exception { // 使用 new 创建对象 MyClass obj1 = new MyClass(1, "hello"); obj1.print(); // 使用反射创建对象 Class clazz = MyClass.class; Constructor constructor = clazz.getConstructor(int.class, String.class); MyClass obj2 = constructor.newInstance(2, "world"); obj2.print(); } }

在上面的示例代码中,首先使用 new 关键字创建了一个 MyClass 的对象 obj1,然后调用了 print 方法输出了对象的属性值。

接着,使用反射机制创建了一个 MyClass 的对象 obj2,首先通过 MyClass.class 获取 MyClass 的 Class 对象,然后通过 getConstructor 方法获取指定的构造方法,并通过 newInstance 方法创建了一个新的对象。最后调用了 print 方法输出了对象的属性值。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3