1)使用new操作符
2)调用class对象的newinstance()方法
3)调用clone()方法,对现有实例的拷贝
4)通过objectinputstream的readobject()方法反序列化类
1.classinstance.java
import java.io.*; class classinstance implements cloneable, serializable { private string str = 测试...; public void fun(){ system.out.println(str); } public classinstance(string str){ system.out.println(有参类的实例化); this.str += str; } public classinstance(){ system.out.println(无参类的实例化); } public object clone(){ return this; } }
2.classinstancetest.java
import java.io.*; import java.lang.reflect.*; public class classinstancetest{ public static void main(string[] args) throws classnotfoundexception, instantiationexception, illegalaccessexception, ioexception,invocationtargetexception, nosuchmethodexception{ //***种类的实例化方式 classinstance ci01 = new classinstance(01); ci01.fun(); //第二种类的实例化方式 classinstance ci02 = (classinstance) class.forname(classinstance).newinstance(); ci02.fun(); //第三种类的实例化方式 classinstance ci03 = (classinstance) ci01.clone(); ci03.fun(); //第四种类的实例化方式 fileoutputstream fos = new fileoutputstream(ci.tmp); objectoutputstream oos = new objectoutputstream(fos); oos.writeobject(ci01); oos.close(); fos.close(); fileinputstream fis = new fileinputstream(ci.tmp); objectinputstream ois = new objectinputstream(fis); classinstance ci04 = (classinstance) ois.readobject(); ois.close(); fis.close(); ci04.fun(); system.out.println(--------------------额外测试--------------------); classinstance ci05 = null; //额外的思考 在第二种类实例化的方式中有没有一种方法实现有参数的构造方式 //获得类的构造信息 constructor[] ctor = class.forname(classinstance).getdeclaredconstructors(); //找到我们需要的构造方法 for(int i=0;i
有参类的实例化 测试...01 无参类的实例化 测试... 测试...01 测试...01 -------------------额外测试-------------------- 有参类的实例化 测试...05
除了这几种情况可以实例化一个java类对象外,隐式调用实例化也是利用了已上集中情况。例如常见的方法:
public class classinstance{ public classinstance(){ } public classinstance getinstance(){ return new classinstance(); } }
以上就是java如何实例化类的详细内容。
