У меня есть класс 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, так что я Вероятно, все это неправильно. Любые советы высоко ценится.
Спасибо вам обоим для ответов –