一、JAVA获取类的三种方式:
1、Class.forName("类的路径");
2、类名.class;
3、实例名.getClass();
// 获取Class类的三种方式
// 1、Class.forName("类的路径")
Class class1 = Class.forName("com.eggp.test.MyObject");
// 2、类名.class
Class class2 = MyObject.class;
// 3、实例名.getClass()
MyObject myObject = new MyObject();
Class class3 = myObject.getClass();
二、JAVA创建对象的四种方式:
1、new;
2、反射,获取Class对象,调用newInstance();
3、clone;该类要实现Cloneable接口
4、反序列化;该类要实现Serializable接口
// 创建对象的四种方式
// 1、new
MyObject myObject1 = new MyObject();
// 2、反射
Class myObjectClass = Class.forName("com.eggp.test.MyObject");
MyObject myObject2 = (MyObject)myObjectClass.newInstance();
// 3、clone
MyObject myObject3 = (MyObject)myObject2.clone();
// 4、反序列化
FileOutputStream fos = new FileOutputStream("myObject.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
MyObject outMyObject = new MyObject("wu han jia you");
System.out.println(outMyObject);
oos.writeObject(outMyObject);
oos.flush();
oos.close();
fos.close();
System.out.println("=============");
FileInputStream fis=new FileInputStream("myObject.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
MyObject readMyObject = (MyObject) ois.readObject();
System.out.print(readMyObject.getName());
ois.close();
fis.close();
======
package com.eggp.test;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.io.Serializable;
public class MyObject implements Serializable,Cloneable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public MyObject() {
}
public MyObject(String name) {
this.name = name;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("name", name)
.toString();
}
}