JAVA ·´Éä
Äú²éѯµÄ¹Ø¼ü´ÊÊÇ£ºnewinstance object initargs ¡£Èç¹û´ò¿ªËÙ¶ÈÂý£¬¿ÉÒÔ³¢ÊÔ¿ìËٰ棻Èç¹ûÏë±£´æ¿ìÕÕ£¬¿ÉÒÔÌí¼Óµ½ËѲء£
(°Ù¶ÈºÍÍøÒ³http://bbs.iaiai.com/forum/read.php?tid=2690µÄ×÷ÕßÎ޹أ¬²»¶ÔÆäÄÚÈݸºÔð¡£°Ù¶È¿ìÕÕ½÷ÎªÍøÂç¹ÊÕÏʱ֮Ë÷Òý£¬²»´ú±í±»ËÑË÷ÍøÕ¾µÄ¼´Ê±Ò³Ãæ¡£)
Ö÷Ìâ : javaµÄ·´Éä»úÖÆ ʹÓõÀ¾ß©® ¸´ÖÆÁ´½Ó ©®ä¯ÀÀÆ÷Êղة®´òÓ¡
javaµÄ·´Éä»úÖÆ
javaµÄ·´Éä»úÖÆÒ»
ÔÚjavaÀïÃæÓÐÒ»ÖÖ·´Éä»úÖÆreflect£¬ÕâÊÇÆäËüÓïÑÔËùûÓеģ¬¿ÉÒÔ¶¯Ì¬´´½¨¶ÔÏóºÍ·½·¨£¬»¹ÓгÉÔ±±äÁ¿µÈ:
Ò».¶ÔÏó¶¯Ì¬´´½¨µÄ·½·¨ÈçÏ£º
ÎÒÃÇÐèҪʹÓõÄÓÐClassÀàºÍConstructorÀà,»¹ÓÐMethodºÍFieldÀà,¾ßÌåµÄʹÓ÷½·¨ÈçÏ£º
1.ʹÓÃClassÀàµÄClass.forName(String className)·½·¨µÃµ½Ò»¸öClass¶ÔÏó£¬
eg: Class aClass=Class.forName(Foo.class.getName());
»òÕß Class aClass=Class.forName("Foo");
2.µÃµ½Ò»¸öClass¶ÔÏóÖ®ºó£¬ÎÒÃÇ»¹ÐèÒª°ÑËüת»»³ÉÎÒÃÇÐèÒªµÄÀàÐͶÔÏó£¬
eg: Foo foo=(Foo)aClass.newInstance();
×¢Òâ´ËµØ·½µÄnewInstance()·½·¨Ö»Äܵ÷ÓÃFooÀàµÄ¹«ÓÐÎ޲ι¹Ô캯Êý£¬Èç¹ûûÓй¹Ô캯Êý
ÔòʹÓø¸ÀàµÄ¹«ÓÐÎ޲ι¹Ô캯Êý£¬Èç¹û±»ÖØÐ´ÁË£¬Ôò»á´´½¨¶ÔÏóʧ°Ü¡£
3.µÃµ½Á˶ÔÏóÖ®ºóÎÒÃǾͿÉÒÔÈÎÒâ°Ú²¼ËýÁË¡£
4.Èç¹ûÎÒÃǵĹ¹Ô캯ÊýÀïÃæÐèÒª´«Èë²ÎÊý£¬Ôõô°ì£¿
ÕâʱºòÎÒÃǾÍÐèҪʹÓÃConstructorÀàÁË£¬´´½¨·½·¨ÈçÏ£º
eg: Constructor ctor = aClass.getDeclaredConstructor(Class[] parameterTypes);
Èç¹ûÎÒÃÇÓÐÕâÑùÒ»¸öÀàÐèÒª¶¯Ì¬´´½¨¶ÔÏó£º
public class BB {
private int baby = 9;
public BB(int b) {
baby = b;
}
/**
* @return Returns the baby.
*/
public int getBaby() {
return baby;
}
/**
* @param baby
* The baby to set.
*/
public void setBaby(int baby) {
this.baby = baby;
}
}
ÄÇôÎÒÃÇÈçºÎÀ´×öÄØ£¿
Integer[] os = new Integer[1];
os[0] = new Integer(6);
Class cls = Class.forName(BB.class.getName());
Constructor ctor = cls.getDeclaredConstructor((new Class[] { int.class }));
BB bbb = (BB) ctor.newInstance(os);
System.out.println(bbb.getBaby());
¶þ.·½·¨µÄ¶¯Ì¬´´½¨£º
¼ÙÉèÉÏÃæµÄBBÀàÐèÒª¶¯Ì¬´´½¨getBaby()·½·¨£¬ÎÒÃǸÃÔõô×ö£¿ÕâʱºòÎÒÃÇÐèҪʹÓõ½
MethodÀàÁË£º
1.¶¨ÒåÒ»¸ö·½·¨m:
eg: Class cls = Cla
Ïà¹ØÎĵµ£º
×î½üÎÒ·¢ÏÖ²»ÉÙ³õѧÕߣ¬Ñ§Ï°javaµÄʱºò£¬¿´Á˺öàjavaµÄÀúÊ·¡¢ÓŵãºÍÓ¦Ó÷¶Î§¡£¶ÔÓÚÕâЩ֪ʶ£¬²¢²»ÄÑÀí½â¡£ÎÒÒ²µ±È»Í¬ÒâjavaÊÇÒ»ÖÖÓÅÐãµÄ¼ÆËã»úÓïÑÔ¡£µ«ÊǶÔÓÚÎÒÃÇÀ´ËµÒªÁ˽âµÄ²¢²»ÊÇ£¬ÕâЩÀúÊ·µÈ֪ʶ¡£¶øÊÇÕÆÎÕjavaÕâÌ×¼¼Êõ¡£ÒªÏëÕÆÎÕÕâÌ×¼¼Êõʵ¼ùÊǷdz£ÖØÒªµÄ¡£ÄÇôºÜ¶à³õѧÕߣ¬ÔÚµÚÒ»²½Êµ¼ùµÄʱºò¾ÍÓöµ½ÁËÀ§ÄÑ£¬¾ÍÊÇÅäÖà ......
JAVAÏà¹Ø»ù´¡ÖªÊ¶
1¡¢ÃæÏò¶ÔÏóµÄÌØÕ÷ÓÐÄÄЩ·½Ãæ
1.³éÏó£º
³éÏó¾ÍÊǺöÂÔÒ»¸öÖ÷ÌâÖÐÓ뵱ǰĿ±êÎ޹صÄÄÇЩ·½Ã棬ÒÔ±ã¸ü³ä·ÖµØ×¢ÒâÓ뵱ǰĿ±êÓйصķ½Ãæ¡£³éÏó²¢²»´òËãÁ˽âÈ«²¿ÎÊÌ⣬¶øÖ»ÊÇÑ¡ÔñÆäÖеÄÒ»²¿·Ö£¬ÔÝʱ²»Óò¿·Öϸ½Ú¡£³éÏó°üÀ¨Á½¸ö·½Ã棬һÊǹý³Ì³éÏ󣬶þÊÇÊý¾Ý³éÏó¡£
2.¼Ì³Ð£º
¼Ì³ÐÊÇÒ»ÖÖÁª½áÀàµÄ²ã´ÎÄ£ÐÍ£¬²¢ ......
Java ¶àÏ̱߳à³ÌÖ®Áù£ºÏß³ÌÖ®¼äµÄͨÐÅ£¨¸½Ô´´úÂ룩
Ô´´úÂëÏÂÔØ
¶àÏ̱߳à³ÌÖУ¬Ïß³ÌÖ®¼äµÄͨÐÅÊÇÒ»¸ö±È½Ï¸´ÔÓµÄÎÊÌâ¡£´ó¼ÒÍùÍù¸ã²»¶®Ê²Ã´ÊǾºÕù×ÊÔ´£¿Ê²Ã´Ê±ºò¿¼ÂÇͬ²½£¿Ôõô½øÐÐͬ²½£¿Ê²Ã´ÊÇÏß³ÌͨÐÅ£¿Ôõô½øÐÐͨÐÅ£¿ºÜ
¶àÅóÓÑÃæÊÔµÄʱºò¶¼Óöµ½¹ýÕâÑùÀàËÆµÄÒ»¸ö±à³ÌÌ⣺¸ø¶ ......
class Super { static int taxi = 1729; }
class Sub extends Super {
static { System.out.print("Sub "); }
}
class Test {
public static void main(String[] args) {
System.out.println(Sub.taxi);
}
}
Êä³ö£º1729
֪ʶҪµã£º
A reference to a class field causes initialization of ......
¼òµ¥À´Ëµ£¬ ½Ó¿ÚÊǹ«¿ªµÄ£¬ÀïÃæ²»ÄÜÓÐ˽Óеķ½·¨»ò±äÁ¿£¬ÊÇÓÃÓÚÈñðÈËʹÓõ쬶ø³éÏóÀàÊÇ¿ÉÒÔÓÐ˽Óз½·¨»ò˽ÓбäÁ¿µÄ£¬ÁíÍ⣬ʵÏÖ½Ó¿ÚµÄÒ»¶¨ÒªÊµÏÖ½Ó¿ÚÀﶨÒåµÄËùÓз½·¨£¬¶øÊµÏÖ³éÏóÀà¿ÉÒÔÓÐÑ¡ÔñµØÖØÐ´ÐèÒªÓõ½µÄ·½·¨¡£
Ò»°ãµÄÓ¦ÓÃÀ×î¶¥¼¶µÄÊǽӿڣ¬È»ºóÊdzéÏóÀàʵÏÖ½Ó¿Ú£¬×îºó²Åµ½¾ßÌåÀàʵÏÖ¡£
»¹ÓУ¬½Ó¿Ú¿ÉÒÔʵÏÖ¶àÖ ......