java中用new定义对象有几种写法?

Python016

java中用new定义对象有几种写法?,第1张

java中用new定义对象有3种写法。

1.使用new关键字

通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。

<span style="color: #ff0000">Employee emp1 = new Employee()</span>   0: new           #19          // class org/programming/mitra/exercises/Employee: dup

: invokespecial #21          // Method org/programming/mitra/exercises/Employee."":()V

2.使用Class类的newInstance方法

我们也可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。

我们可以通过下面方式调用newInstance方法创建对象:

<span style="color: #ff0000">Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInstance()</span>

3.使用反序列化

当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现Serializable接口 。

<span style="color: #ff0000">ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"))Employee emp5 = (Employee) in.readObject()</span>

new 后面是一个构造函数,上面例子是BufferedReader有一个构造器如下public BufferedReader(InputStreamReader isR){},

他需要传一个InputStreamReader 类型的参数

.new new InputStreamReader(System.in)

就是实例化一个InputStreamReader对象作为BufferedReader的参数