为什么用newInstance方法去创建对象是一种利用反射创建对象的方法

 我来答
妥当且坦率的才俊k
推荐于2017-09-07 · TA获得超过3825个赞
知道小有建树答主
回答量:1008
采纳率:80%
帮助的人:963万
展开全部

首先总结下,创建对象的3中方式:

  • 使用new的方式,最为常见。

  • 使用对象的clone()方法。

  • 使用反射机制的newInstance()方法。


举个简单的例子:

package com.java;

public class Demo
{
/**
 * 通过两种方式创建对象,以做对比。
 * @param args
 * @throws ClassNotFoundException
 * @throws InstantiationException
 * @throws IllegalAccessException
 */
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException
{
// 我们认为这种方方式,Demo类和Basic类是耦合的,
// 编译Demo类时,Basic类必须存在,拓展性不强。
Basic basic0 = new Basic();


// 很明显这种方式,在编译Demo类时,并不需要
// Basic类的存在,只要在运行Demo类时,存在即可,
// 所以我们认为Demo类和Basic是松耦合的,
// 为后期的拓展提供了空间,好处显而易见。这么说,如果没有
// 反射机制,就没有struts、spring、hibernate等等这些web框架。
Class clazz = Class.forName("com.java.Basic");

Basic basic1 = (Basic) clazz.newInstance();
}
}

class Basic
{
}

好好体会下,反射带来的便利。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式