我有一个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,所以我很可能整个事情都做错了。任何意见是极大的赞赏。
谢谢都试图为答案 –