我有一個Java類:確保Groovy的ArrayList的對象是同一類
public class Parent
{
public int parentVal;
}
,將有像幾個繼承Groovy類:
class Child1 extends Parent
{
def value1;
}
class Child2 extends Parent
{
def value2;
}
我想有一個集合Groovy的,將被限制爲僅包含Child1或CHILD2實例,因此,如果集合包含Child1情況下,它不能包含CHILD2實例(或其他任何東西)。這是我嘗試在此:
import java.util.ArrayList;
public class MyCollection<T extends Parent>
{
private ArrayList<T> list = new ArrayList<T>();
public void setType(Class<T> cls)
{
this.cls = cls;
}
public void add(T item) throws Exception
{
if(item.getClass() == cls)
{
list.add(item);
}
else
{
throw new Exception("wrong argument type");
}
}
public T getItem(int index)
{
return list.get(index);
}
private Class<T> cls;
}
,並在我的Groovy腳本:
def c1 = new Child1()
c1.value1 = 1
c1.parentVal = 2;
def c2 = new Child2()
c2.value2 = 2
c2.parentVal = 3;
def myCol = new MyCollection()
myCol.setType(Child1.class)
myCol.add(c1)
myCol.add(c2) // throws an exception
的最後一條語句真的拋出了「錯誤的參數類型」的例外,但我是新來的Java和Groovy,所以我很可能整個事情都做錯了。任何意見是極大的讚賞。
謝謝都試圖爲答案 –