最近看到一个java面试题是:创建对象的方式有几种
很多同学看到这道题第一想法肯定是new出来。其实除了new对象的方式以外还有很多种下面我们来看看。
一、new Obj..()
这种方式应该是很多人最经常使用的不过在框架当中很多对象都已经使用依赖注入的方式交给框架容器管理。使用注解的形式直接使用。但是项目当中自己主动new Obj()的情况还是很常见。这种方式其实是调用了对象中的构造函数来创建对象。
二、clone()
使用Object类的clone方法。这个方法可以克隆出一个完全一样的对象。这个方法没有调用构造方法。
三、反射
1)通过类的全限定名来创建对象
Class.forName("xxx.xxx.Obj..").newInstance()
2)通过构造器来创建对象
Construtor<Obj..> contructor = Obj..class.getConstructor();
Obj... o = contructor.newInstance();
其实通过类对象来创建对象底层也是通过构造器来创建对象。所以在框架中通常使用2)方式创建对象
四、通过反序列化来创建对象
这种方式创建的对象必须实现Serializable接口
ObjectInputStream Obji = new ObjectInputStream(new FileInputStream("Object1.txt"));
Obj..t =(Obj.) Obji.readObject();