我想打开配置屏幕,并在用户点击确定后发回数据。
我将这些对象作为配置
configObjA a;
configObjB b;
两者都实现IDisplayable(我的界面)。 现在,congfig屏幕获得两个ArrayLists并将它们放入JLists gui中。 它迭代了JList并将它们放在datamodel中。
当我从屏幕返回时,我想向主屏幕发送结果。 所以我重新迭代数据模型并将其全部放回到arraylist
中问题是主屏幕对此一无所知 有没有办法我的配置屏幕会返回主屏幕会知道的类型?
我想回来了 public List getOptionsList() 在方法中,我将创建一个我发送的类型的列表。 (然后我必须保留我发送的类型)。那有什么好处吗?如何在类型未知的情况下创建通用列表 对象类型?有什么建议吗?
顺便说一下:对于那种简单的需求,我的愚蠢的gui过程是不是很复杂?答案 0 :(得分:6)
当类型是未知对象类型时,如何创建通用列表?
你做不到。通用列表的重点在于您在编译时知道对象类型,以便编译器可以检查您对该列表的使用情况。
如果你至少知道一个父类或接口(实际上是通常的情况),你可以使用它:
List<IDisplayable> l;
如果它可以是任何类型的对象,则只能说
List<Object> l;
将接受任何类型的Object,但删除了进行有意义的编译时类型检查的可能性。
答案 1 :(得分:1)
您可以创建未知类型的通用列表,但不能将对象放在其中。
public <T> List<T> makeList() {
return new ArrayList<T>();
}
当然,使用此方法的方法必须知道类型,并且只能放入此类型的对象。
在您的情况下,问题似乎是您想要滥用JList作为数据容器。它不是,它是一个视图组件。为您的逻辑使用真实的数据结构,并将其包装在ListModel中,为列表提供要显示的数据。