问题标签 [unbounded-wildcard]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在 API 调用中使用多个通配符
我正在使用 Anthill(UrbanCode/IBM 产品),其中一种方法需要 type 的参数java.lang.Class<? extends SourceConfig<?>> sourceConfigType
。
在阅读了关于泛型的教程后,我发现一个类GitSourceConfig
是的子类,SourceConfig
但我不明白泛型SourceConfig<?>
在这种情况下是如何工作的。有任何想法吗?
最终目标是获取一个GitSourceConfig
对象并调用getRepositoryUrl
/setRepositoryUrl
方法。Anthill Pro API 在这里,我正在查看SourceConfig
课程。
java - 无法从列表转换列出>
- >
原始列表转换为List<?>
很好。为什么原始列表列表不能转换为 列表List<?>
?
背景故事(以减轻xy 问题):
我正在使用的 API 返回List<JAXBElement>
。我碰巧知道它总是List<JAXBElement<String>>
。我计划循环并构建自己List<String>
的List<JAXBElement> raw = api();
.
我试过了:
但这些给出类型不匹配错误。
有趣的是,这没有给出警告或错误:
java - 参数化类的 Java 泛型:无界通配符与原始类型
我有一个参数化接口 RestHandler。
我需要使用 Class.forName 从配置创建一个类。现在我想出了三个版本,全部编译成功。
版本 1:
版本 2:
版本 3:
我的问题是,为什么它们都有效,哪一个是最佳实践?
java - 如何从scala调用通配符java函数
我有一个带有一些通用容器的 java 库:
和一个工厂方法来获取它们的具体实例
而且我还有一个实用方法可以键入我的通配符表(通过转换和转换值)
(注意使用 V 而不是 ? 作为 IColumnValues 的参数)
在java中,我可以调用以下命令来获取一个值为Double的表:
但是在 Scala 中,我似乎无法获得相同的工作调用:
结果是:
我也尝试过使用 null 而不是 Optional.empty() 导致:
我还尝试了一种辅助方法来捕获提供给 IColumnValues 的通配符,以便我可以实际传递一个函数。但是没有运气,似乎每当我尝试将内部 _ 之一绑定到命名类型参数时,编译器都会抛出一个合身。
我可以随时更改 Java 库,但我认为我必须遗漏一些东西,因为 Scala 和 Java 应该是完全可互操作的。
有没有办法在不改变java的情况下从scala调用getPureTypedTable?(转换器函数不为空或为空可选)
PS:很抱歉周五晚些时候发布了冗长的帖子,我已经盯着这个看了一段时间了
java - 列表> 和列表在java中是不兼容的类型
- 在java中是不兼容的类型
无论哪种方式,我都没有得到这段代码来编译:
在泛型方面,java似乎没有考虑List
并且List<?>
是同一类型。
这是为什么?有什么好的出路吗?
语境
有一个具有以下签名的库函数:public <T> Set<Class<? extends T>> getSubTypesOf(final Class<T> type)
. 这适用于作为参数传递的简单类型,但在泛型的情况下,结果未使用通配符参数化,导致 javac 抱怨原始类型。我想将结果传播到我的应用程序的其余部分,Set<Class<? extends GenericTypeHere<?>>>
但简单的转换无法按我的预期工作。
编辑:解决方案
感谢您的回答,这是我最终如何使其工作的方法:
java - Java - 从抽象类的子类调用方法
给定以下抽象类:
和以下子类:
我希望通过调用方法做这样的事情:
在哪里createVersionResponse(...)
和createVersionVO(...)
看起来像这样:
和 VersionVOV1 看起来像这样:
当我尝试编译这行代码时出现了我的问题:
在getVersionInfo(...)
. 我收到一条如下所示的消息:
BaseVersionResponse 类型中的方法 populate(capture#3-of ?) 不适用于参数 (BaseVO)
关于populate
上面的方法。
我的想法是(这显然是不正确的),因为在代码中的这一点上,baseVersionResponse 实际上是一个特定的子实例,所以该类将确切地知道从该特定子类调用哪个填充方法。
我在这里做错了什么?如果这不是正确的方法,是否有更好的方法来做到这一点?
感谢您的时间!
java - Java - 新堆栈[N] 是否等同于通用数据类型堆栈的新堆栈 [N]- ?
是否new Stack<?>[N]
等同于new Stack[N]
通用数据类型Stack<Item>
?
编辑:虽然我知道最好避免混合泛型类型和数组并且存在更强大的解决方案,但我的疑问仍然存在: Kevin Wayne 和 Robert Sedgewick 的第4 版算法(第 158 页)等广受认可的教科书建议使用构造如下所示:
java - 如果只能插入空值,List 的目的是什么?
根据链接中提供的信息,它说:
重要的是要注意
List<Object>
和List<?>
不一样。您可以将 Object 或 Object 的任何子类型插入到List<Object>
. 但是您只能将 null 插入到List<?>
.
使用List<?>
when onlynull
可以插入有什么用?
例如,
methodOne(ArrayList<?> l):
我们可以将此方法用于ArrayList
任何类型,但在该方法中,我们不能向 List 中添加任何内容,除了null
.
java - 在 Java 中,通配符能做什么常规泛型不能做什么?
我是 Java 新手。在本 文档中,他们将此作为使用通配符的用例:
这是他们的解决方案:
但是我可以在没有通配符的情况下做同样的事情:
有人可以向我展示一个简单的用例,其中常规泛型不起作用但通配符可以吗?
更新:这里的答案何时在 Java 泛型中使用通配符?不要告诉我们需要通配符。事实上,它是相反的。
scala - 未绑定通配符类型
当我得到error: unbound wildcard type
. 我试图声明这个(无用的)函数:
为什么我会收到此错误?
是否可以在不引入命名类型变量的情况下声明此函数?如果是这样,怎么做?