1ãnew
ãã使ç¨javaçå ³é®ånewæ¥å建对象å®ä¾ãæé å½æ°é¾ä¸çæææé å½æ°é½ä¼è¢«èªå¨è°ç¨ã
Java代ç ï¼2ãclone
æé å½æ°ä¸è¢«èªå¨è°ç¨ã
ãã
Java代ç ï¼ããå¦æéè¦å¤å¶ä¸é¢çé£ä¸ªobjæåç对象å®ä¾æ¶ï¼è°ç¨new CreateInstance().getInstance()æ¹æ³å°±okäºã
JDKä¸Object# clone()æ¹æ³çååæ¯ï¼protected native Object clone() throwsã CloneNotSupportedException; æ¹æ³ä¿®é¥°ç¬¦æ¯protectedï¼èä¸æ¯publicã
è¿ç§è®¿é®çä¸å¯è§æ§ä½¿å¾å¯¹Object#clone()æ¹æ³ä¸å¯è§ãæ以ï¼å¿ ééåObjectçcloneæ¹æ³åæè½ä½¿ç¨ã
Java代ç ï¼å¼å¾æ³¨æçæ¯ ï¼å¦æéè¦ä½¿ç¨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å¼å¸¸ã
æ æ³è¿è¡å®ä¾åã