java new class 直接调用_java中创建对象的的两种方式具体解释,一个是new一个是调用Class类的newinstance方法?...
展開全部
1、new
使用java的關鍵字new來創建對象實例。構造函數鏈中的所有構造函數都32313133353236313431303231363533e78988e69d8331333337396331會被自動調用。Java代碼:
CreateInstance??instance?=?new??CreateInstance??();
2、clone
構造函數不被自動調用。
Java代碼:
public?class?CreateInstance??implements?Cloneable{
public?CreateInstance?getInstance()?throws?CloneNotSupportedException{
return?(CreateInstance)?this.clone();
}
}
如果需要復制上面的那個obj指向的對象實例時,調用new CreateInstance().getInstance()方法就ok了。
JDK中Object# clone()方法的原型是:protected native Object clone() throws CloneNotSupportedException; 方法修飾符是protected,而不是public。
這種訪問的不可見性使得對Object#clone()方法不可見。所以,必需重寫Object的clone方法后才能使用。Java代碼:
public?class?CreateInstance??implements?Cloneable{
public?CreateInstance?clone?throws?CloneNotSupportedException{
return?(CreateInstance)?super.clone();
}
}
值得注意的是?:如果需要使用clone方法,必需實現java.lang.Cloneable接口,否則會拋出java.lang.CloneNotSupportedException。
另外clone方法所做的的操作是直接復制字段的內容,換句話說,這個操作并不管該字段對應的對象實例內容。
像這樣字段對字段的拷貝(field to field copy)就成為"淺拷貝",clone方法所做的正是"淺拷貝"。
3、newInstance
利用java.lang.Class類的newInstance方法,則可根據Class對象的實例,建立該Class所表示的類的對象實例。
創建CreateInstace類的對象實例可以使用下面的語句(這樣需要一個已經存在的對象實例)。
CreateInstance?instance?=?CreateInstance.class.newInstance();
或者使用下面的語句(只需要存在相應的.class文件即可)
CreateInstance?instance?=?(CreateInstance)Class.forname("com.create.instance.CreateInstance").newInstance();
如果包下不存在相應.class文件,則會拋出ClassNotFoundException。
注意?:newInstance創建對象實例的時候會調用無參的構造函數,所以必需確保類中有無參數的構造函數,否則將會拋出java.lang.InstantiationException異常。
無法進行實例化。
總結
以上是生活随笔為你收集整理的java new class 直接调用_java中创建对象的的两种方式具体解释,一个是new一个是调用Class类的newinstance方法?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多线程锁,线程池,消费者生产者模型
- 下一篇: 一起看一下主流应用使用了哪些三方库