下記のように、同一のAMFデータに対して、ArrayList<?>, ArrayList<String>, String[]などに
Decodeすることが可能です。

// Construction of Data.
ArrayList<String> strings = new ArrayList<String>();
strings.add("Item001");
strings.add("Item002");
strings.add("Item003");
strings.add("Item004");
strings.add("Item005");

// How to encode.
byte[] amf = AmfUtil.encode(strings); // Encode as ArrayCollection.

// How to decode. (ArrayList<?>)
ArrayList<?> decoded1 = AmfUtil.decode(amf, ArrayList.class);

// How to decode. (ArrayList<String>)
ArrayList<String> decoded2 = AmfUtil.decode(amf,
    TypeUtil.getCollectionType(ArrayList.class, String.class));

// How to decode. (String[])
String[] decoded3 = AmfUtil.decode(amf, String[].class);

この例では、ArrayList<?>とArrayList<String>の例に、実質的な違いはありませんが
要素が確実にString型にdecodeされるという観点から、ArrayList<String>の方法で
指定することが推奨です(要素がStringにDecodeできない場合、例外が発生します)