JavaÖÐtoArrayµÄÓ÷¨Ì½¾¿
Ò»£® Incident
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
String[] tt =(String[]) list.toArray(new String[0]);
}
}
Õâ¶Î´úÂëÊÇûÎÊÌâµÄ£¬µ«ÎÒÃÇ¿´µ½String[] tt =(String[]) list.toArray(new String[0]) ÖеIJÎÊýºÜÆæ¹Ö£¬È»¶øÈ¥µôÕâ¸ö²ÎÊýnew String[0]È´ÔÚÔËÐÐʱ±¨´í¡£¡£¡£
¶þ£® Root Cause Analysis
¾Ñо¿·¢ÏÖtoArrayÓÐÁ½¸ö·½·¨£º
public Object[] toArray() {
Object[] result = new Object[size];
System.arraycopy(elementData, 0, result, 0, size);
return result;
}
²»´ø²ÎÊýµÄtoArray·½·¨£¬Êǹ¹ÔìµÄÒ»¸öObjectÊý×飬Ȼºó½øÐÐÊý¾Ý¿½±´£¬´Ëʱ½øÐÐתÐ;ͻá²úÉúClassCastException£¬ÕâÒ²¾ÍÊÇÉÏÊöÎÊÌâµÄroot causeÁË¡£
public Object[] toArray(Object a[]) {
if (a.length < size)
a = (Object[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size); System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
¶ø
Ïà¹ØÎĵµ£º
Collection:ÊÇ´æ·ÅÒ»×éµ¥ÖµµÄ×î´ó½Ó¿Ú£¬Ã¿¸öÖµ¶¼ÊÇÒ»¸ö¶ÔÏó£¬Ò»°ã²»»áÖ±½ÓʹÓÃCollection½Ó¿Ú
List£ºÊÇCollectionµÄ×Ó½Ó¿Ú£¬¶ÔCollection½øÐÐÁË´óÁ¿µÄÀ©³ä£¬ÀïÃæ´æ·ÅµÄÄÚÈÝ¿ÉÒÔÖظ´
Set£ºÊÇCollectionµÄ×ÓÀ࣬ûÓжÔCollection½øÐÐÀ©³ä£¬ÀïÃæ´æ·ÅµÄÄÚÈݲ»ÔÊÐíÖظ´
Map£ºÊÇ´æ·ÅÒ»¶ÔÖµµÄ×î´ó½Ó¿Ú£¬½Ó¿ÚÖÐÿ¸öÔªËض¼ÊÇÒ»¶ ......
1¡¢JDBC£¨Java Database Connectivity£©ÌṩÁ¬½Ó¸÷ÖÖ¹ØϵÊý¾Ý¿âµÄͳһ½Ó¿Ú¡£
¡¡¡¡2¡¢EJB(Enterprise JavaBeans)ʹµÃ¿ª·¢Õß·½±ãµØ´´½¨¡¢²¿ÊðºÍ¹ÜÀí¿çƽ̨µÄ»ùÓÚ×é¼þµÄÆóÒµÓ¦Óá£
¡¡¡¡3¡¢Java RMI(Java Remote Method Invocation)ÓÃÀ´¿ª·¢·Ö²¼Ê½JavaÓ¦ÓóÌÐò¡£Ò»¸öJava¶ÔÏóµÄ·½·¨Äܱ»Ô¶³ÌJavaÐéÄâ ......
¹Ø¼ü×Ö: java sizeof
ÔÚC/C++ÖУ¬µ±ÎÒÃÇÏëÖªµÀÒ»¸ö¶ÔÏó»òÕßÒ»¸öÔʼÊý¾ÝÀàÐÍËùÕ¼ÓõÄÄÚ´æ´óСʱ£¬Ö»Ðè¼òµ¥µ÷ÓÃsizeof²Ù×÷·û¼´¿É£¬µ«ÊÇ£¬ÔÚjavaÖÐÊÇûÓÐÏàÓ¦µÄ²Ù×÷·û»òÕß·½·¨À´Ö±½ÓÍê³ÉÏàÓ¦¹¦Äܵġ£sizeof ÔÚC/C++µÃµ½´óÁ¿µÄÔËÓã¬ÊdzÌÐòÔ±±Ø²»¿ÉÉٵŤ¾ßÖ®Ò»£¬ÄÇôΪʲôjavaÈ´²»ÌṩÄØ£¿Òª»Ø ......
Java Ò»¹²8ÖÖ»ù±¾ÀàÐÍ£¬4ÖÖÕûÐÍ£¬2ÖÖ¸¡µãÀàÐÍ£¬1ÖÖ±íʾunicode±àÂëµÄ×Ö·ûµ¥ÔªµÄ×Ö·ûÀàÐÍchar£¬1ÖÖ±íʾÕæÖµµÄbooleanÀàÐÍ¡£
4ÖÖÕûÊýÀàÐÍ
int, 4 ×Ö½Ú
short£¬2×Ö½Ú
long,8×Ö½Ú
byte£¬1×Ö½Ú
2ÖÖ¸¡µãÀàÐÍ
float£¬4×Ö½Ú£¬ºÜÉÙÇé¿öÊʺÏʹÓÃfloat£¬ÊýÖµÓÐÒ»¸öºó׺F,ûÓкó׺µÄ¸¡µãÊýֵĬÈÏΪdouble.Ò²¿ÉÒÔÔÚ¸¡µãÊýÖµºóÃæÌí ......
£¨1£© ¶ÔÏóÉúÃüÖÜÆڵĿªÊ¼
¶ÔÏóÉúÃüÖÜÆÚ¿ªÊ¼Ê±£¬ÐèҪΪ¶ÔÏó·ÖÅäÄڴ棬²¢ÇÒ³õʼ»¯ËüµÄʵÀý±äÁ¿£»
¶ÔÏóÉúÃüÖÜÆÚ½áÊø
& ......