我SET1聲明爲靜態的String [],我想申報SET2爲SET1 +其他一些參數。是否可以聲明SET2靜態相似(即私有靜態String [])SET1,但使用上述定義,如果不是如何做到這一點?
private static final String[] SET1 = { "1", "2", "3" };
SET2 = SET1 + { "4", "5", "6" };
我SET1聲明爲靜態的String [],我想申報SET2爲SET1 +其他一些參數。是否可以聲明SET2靜態相似(即私有靜態String [])SET1,但使用上述定義,如果不是如何做到這一點?
private static final String[] SET1 = { "1", "2", "3" };
SET2 = SET1 + { "4", "5", "6" };
看Commons Util ArrayUtils.add:
static String[] SET2 = ArrayUtils.add(SET1, {"4", "5", "6" });
也許列表是在這種情況下更容易,因爲陣列是固定的長度(自然)。如果你想靜態實例化你可以做這樣的事情。
private static final List<String> SET1 = new ArrayList<String>();
private static final List<String> SET2 = new ArrayList<String>();
static {
SET1.add("1");
SET1.add("2");
SET2.addAll(SET1);
SET2.add("3");
}
或者使用某種集合實用程序庫。
這是一個大丑:
private static final String[] SET1 = { "1", "2", "3" };
private static final String[] SET2 = concat(
String.class, SET1, new String[]{"4", "5", "6"});
@SuppressWarnings("unchecked")
static <T> T[] concat(Class<T> clazz, T[] A, T[] B) {
T[] C= (T[]) Array.newInstance(clazz, A.length+B.length);
System.arraycopy(A, 0, C, 0, A.length);
System.arraycopy(B, 0, C, A.length, B.length);
return C;
}
private static final String[] SET1 = { "1", "2", "3" };
private static final String[] SET2;
static
{
List<String> set2 = new ArrayList<String>(Arrays.asList(SET1));
set2.addAll(Arrays.asList("3", "4", "5"));
SET2 = set2.toArray(new String[0]);
}
我想我們需要使用對象[]和使用中的addAll而不是鑄造回的String [] – user339108 2010-09-20 10:39:36
我希望當有不克隆2組有限參數。 ArrayUtils.addAll([「a」,「b」,「c」],[「1」,「2」,「3」])= [「a」,「b」,「c」,「1」 「2」,「3」]。克隆似乎在這裏是多餘的。 – user339108 2010-09-20 10:40:10