java实例化对象的方式

一、Java中创建(实例化)对象的五种方式 

  1、用new语句直接创建对象,这是最常见的创建对象的方法。

  2、通过工厂方法返回对象,如:String str = String.valueOf(23); 

  3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance(); 

  4、调用对象的clone()方法。

  5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

二.实例说明:

 创建 Fruit(水果)实体类 

package com.shine.demo.object; import java.io.Serializable; @SuppressWarnings("serial") public class Fruit implements Serializable, Comparable<Fruit>{    /**   * id.   */  private Long id;    /**   * 名称.   */  private String name;    /**   * 价格.   */  private Double price;    public Fruit() {  super();  }  public Fruit(Long id, String name, Double price) {  super();  this.id = id;  this.name = name;  this.price = price;  }  public Long getId() {  return id;  }  public void setId(Long id) {  this.id = id;  }  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public Double getPrice() {  return price;  }  public void setPrice(Double price) {  this.price = price;  }    @Override  public String toString() {  return "id为:" + this.getId() + ",的:"+ this.getName() +"的价格为:"+this.getPrice();  }  @Override  public int compareTo(Fruit otherFruit) {    if(!(this.id.equals(otherFruit.id)))  return this.id.compareTo(otherFruit.id);  else if(!(this.name.equals(otherFruit.name)))  return this.name.compareTo(otherFruit.name);  else if(this.price.equals(otherFruit.price))  return this.price.compareTo(otherFruit.price);  return 0;  }  @Override  public int hashCode() {  final int prime = 31;  int result = 1;  result = prime * result + ((id == null) ? 0 : id.hashCode());  result = prime * result + ((name == null) ? 0 : name.hashCode());  result = prime * result + ((price == null) ? 0 : price.hashCode());  return result;  }  @Override  public boolean equals(Object obj) {  if (this == obj)  return true;  if (obj == null)  return false;  if (!(obj instanceof Fruit))  return false;    Fruit other = (Fruit) obj;    return this.id.equals(other.id) && this.name.equals(other.name) && this.price.equals(other.price);  }   } 

测试说明 : 下面主要对1/3方式进行说明

package com.shine.demo.object; public class ObjOpen {  public static void main(String[] args) {    /**方法一 : new语句直接创建对象 */  Fruit fruit = new Fruit(1L,"苹果",4.3);  System.out.println(fruit.toString());        /**方法三 :运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。   * 如:Object obj = Class.forName("java.lang.Object").newInstance();   **/  try {  Fruit fruit2 = (Fruit) Class.forName("com.shine.demo.object.Fruit").newInstance();  fruit2.setId(2L);  fruit2.setName("香蕉");  fruit2.setPrice(2.6);  System.out.println(fruit2);  } catch (InstantiationException e) {  e.printStackTrace();  } catch (IllegalAccessException e) {  e.printStackTrace();  } catch (ClassNotFoundException e) {  e.printStackTrace();  }    } } 

三、结果:  

原文地址:https://www.cnblogs.com/anyiz/p/10737116.html