java实例化类_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{

/**

* 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();

}

}

}

三、结果:

78125e7cfba6c200114599465bbff4b2.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值