标题:
Java中创建对象的5种方式(2)
[打印本页]
作者:
look_w
时间:
2018-12-15 14:20
标题:
Java中创建对象的5种方式(2)
例子让我们看一看为下面这个Employee类创建对象:
class
Employee
implements
Cloneable, Serializable {
private
static
final
long
serialVersionUID = 1L
;
private
String name;
public
Employee() { System.out.println(
"Employee Constructor Called..."
); }
public
String getName() {
return
name; }
public
void
setName(String name) {
this
.name =
name; } @Override
public
int
hashCode() {
final
int
prime = 31
;
int
result = 1
; result
= prime * result + ((name ==
null
) ? 0
: name.hashCode());
return
result; } @Override
public
boolean
equals(Object obj) {
if
(
this
==
obj)
return
true
;
if
(obj ==
null
)
return
false
;
if
(getClass() !=
obj.getClass())
return
false
; Employee other
=
(Employee) obj;
if
(name ==
null
) {
if
(other.name !=
null
)
return
false
; }
else
if
(!
name.equals(other.name))
return
false
;
return
true
; } @Override
public
String toString() {
return
"Employee [name=" + name + "]"
; } @Override
public
Object clone() { Object obj
=
null
;
try
{ obj
=
super
.clone(); }
catch
(CloneNotSupportedException e) { e.printStackTrace(); }
return
obj; }}
[url=]
[/url]
下面的Java程序中,我们将用5种方式创建Employee对象。你可以从
GitHub
找到这些代码。
[url=]
[/url]
public
class
ObjectCreation {
public
static
void
main(String... args)
throws
Exception {
//
By using new keyword
Employee emp1 =
new
Employee(); emp1.setName(
"Naresh"
); System.out.println(emp1
+ ", hashcode : " +
emp1.hashCode());
//
By using Class class's newInstance() method
Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee"
) .newInstance();
//
Or we can simply do this
//
Employee emp2 = Employee.class.newInstance();
emp2.setName("Rishi"
); System.out.println(emp2
+ ", hashcode : " +
emp2.hashCode());
//
By using Constructor class's newInstance() method
Constructor<Employee> constructor = Employee.
class
.getConstructor(); Employee emp3
=
constructor.newInstance(); emp3.setName(
"Yogesh"
); System.out.println(emp3
+ ", hashcode : " +
emp3.hashCode());
//
By using clone() method
Employee emp4 =
(Employee) emp3.clone(); emp4.setName(
"Atul"
); System.out.println(emp4
+ ", hashcode : " +
emp4.hashCode());
//
By using Deserialization
//
Serialization
ObjectOutputStream out =
new
ObjectOutputStream(
new
FileOutputStream("data.obj"
)); out.writeObject(emp4); out.close();
//
Deserialization
ObjectInputStream in =
new
ObjectInputStream(
new
FileInputStream("data.obj"
)); Employee emp5
=
(Employee) in.readObject(); in.close(); emp5.setName(
"Akash"
); System.out.println(emp5
+ ", hashcode : " +
emp5.hashCode()); }}
程序会输出:
Employee Constructor Called...Employee [name=Naresh], hashcode : -1968815046Employee Constructor Called...Employee [name=Rishi], hashcode : 78970652Employee Constructor Called...Employee [name=Yogesh], hashcode : -1641292792Employee [name=Atul], hashcode : 2051657Employee [name=Akash], hashcode : 63313419
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0