首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java泛型问题-在类型为未知对象类型时创建泛型列表

java泛型问题-在类型为未知对象类型时创建泛型列表
EN

Stack Overflow用户
提问于 2011-04-07 15:07:31
回答 2查看 5.7K关注 0票数 1

我想打开一个配置屏幕,并发送回其数据时,用户点击确定。

我将这些对象作为配置

代码语言:javascript
运行
复制
configObjA a;  
configObjB b;

两者都实现了IDisplayable (我的接口)。现在,congfig屏幕获得两个ArrayLists,并将它们放入JLists gui中。它对JList进行迭代并将其放入数据模型中。

当我从屏幕返回时,我希望将结果发送到主屏幕。因此,我重新迭代数据模型,并将其放回数组列表中

问题是主屏幕不知道什么,我的配置屏幕有没有办法返回主屏幕知道的类型?

我想返回公共列表getOptionsList(),在这个方法中,我将创建一个我发送的类型的列表。(然后我必须保留我发送的类型)。这有什么好处吗?当类型为未知时,如何创建泛型列表

对象类型?有什么建议吗?

顺便说一句:对于这个简单的需求,我愚蠢的gui过程是不是太复杂了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-07 15:15:34

当类型为未知对象类型时,如何创建泛型列表?

你不能。泛型列表的全部意义在于,您确实知道编译时的对象类型,以便编译器可以检查您对该列表的使用情况。

如果您至少知道一个父类或接口(实际上这是通常的情况),则可以使用它:

代码语言:javascript
运行
复制
List<IDisplayable> l;

如果它可以是任何类型的对象,你只能说

代码语言:javascript
运行
复制
List<Object> l;

它可以接受任何类型的对象,但消除了有意义的编译时类型检查的可能性。

票数 6
EN

Stack Overflow用户

发布于 2011-04-07 20:27:19

您可以创建未知类型的泛型列表,但不能真正将对象放入其中。

代码语言:javascript
运行
复制
public <T> List<T> makeList() {
    return new ArrayList<T>();
}

当然,使用此方法的方法必须知道类型,并且只能将此类型的对象放入。

在您的例子中,问题似乎在于您希望将JList误用为数据容器。它不是,它是一个视图组件。为您的逻辑使用真实的数据结构,并将其包装在ListModel中,为您的列表提供要显示的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5577253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档