java中生成对象的方式有多种,如下所示:
1、使用new操作符,这是最普遍的一种
如:String s=new String("abc");
2、使用反射动态生成
利用Class,ClassLoader,Constructor中的方法可以动态的生成类实例
如:Object o=Class.forName("java.lang.String").newInstance();
Object o=String.class.getClassLoader.loadClass("java.lang.String").newInstance();
以上的方式需要目标类拥有公有无参构造函数
以下使用Constructor进行动态生成
class User{
public User(String user,Integer id){}
}
Constructor c=User.class.getConstructor(new Class[]{String.class,Integer.class});
User user=(User)c.newInstance(new Object[]{"zhang san",123});
3、使用克隆生成对象
例如使用一个实现了Cloneable接口的对象,调用其clone()方法获得该对象的一份拷贝
4、利用反序列化从流中生成对象
利用ObjectInptuStream的readObject()方法生成对象
===============================================
以String类为例
第一种(通过new ):
String str = new String();
第二种(利用工厂模式):
String str = Class.forName(String).newInstance() 为工厂模式
第三种:(利用克隆)clone
第四种:(利用反射)
第五种:(使用Spring的DI)
---------------------------------------------------------------
创建对象的方法只有一种,那就是用 new 关键字创建。
其他的都是获得对象的方法,有3种:
1、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()方法。
2、调用对象的clone()方法。
3、运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
创建对象和获得对象不一样,创建只有new来创建,其他的都是获得对象的手段,知道的就这么多了。
阅读(444) | 评论(0) | 转发(0) |