问题标签 [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.

0 投票
1 回答
508 浏览

java - 在泛型类型中将有界通配符转换为无界通配符是错误的(X> 到 X>

考虑这个样本:

换句话说,我可以将 a 分配给Class<? extends T>a Class<?>T但不能将 a 分配Set<Class<? extends T>>给 a Set<Class<?>>

它可能与协方差/逆变的一些限制有关,但是什么?

我可以介绍一个演员表:Class.class::cast会做。但是有没有办法通过微妙的 type-fu 让编译器按照我的意愿弯曲,而不是用演员表猛烈抨击它?

0 投票
2 回答
169 浏览

java - 关于通配符的 Java 语言规范

我正在浏览此链接(第 4 章。类型、值和变量),但不明白以下几点:

通配符与既定类型理论的关系是一个有趣的关系,我们在这里简要提及。通配符是存在类型的受限形式。Given a generic type declaration G<T extends B>, G<?> is roughly analogous to Some X <: B. G<X>.

如果您提供很好的例子来清楚地理解上述观点,我将不胜感激。

提前致谢。

0 投票
1 回答
83 浏览

java - 尝试 #3:无法在 Java 中用两个问号形成所需类型的表达式

我以前的 SSCCE 本身是不正确的。我试着再写一篇,但它也不正确。所以,现在我不明白这个问题,因此无法编写纯 Java 示例,因此我发布了带有库类的示例:

问题是一样的:如何准备callback合适的班级?

如果不可能,那么,首先,请说明它真的不可能,其次,请解释为什么它是不可能的。

更新

指定Object回调没有帮助:

0 投票
1 回答
145 浏览

java - Java:通配符/泛型的问题

我真的在努力使用通配符/泛型。我正在尝试创建一个FileManager可以接受自定义 Java Bean 并将读/写 bean 写入文件的实用程序类。举个例子,假设我有一个名为的接口Data,它由RecipeDataand实现DemographicData。我正在使用Super CSV将 CSV 文件转换为 Java Bean。这是我的阅读方法,它基于我从Super CSV.

目前,我收到以下错误:

List 类型中的方法 add(capture#1-of ? extends Data) 不适用于参数 (Data)

我不确定我在做什么是可能的。这个想法是,container传递的 可以是类型RecipeDataDemographicData。所以我认为一个问题是data应该属于这两种类型。

任何人都可以就我如何解决这个问题或者它是否会工作提供反馈吗?

编辑:我真的不确定这是可能的。

0 投票
4 回答
8568 浏览

java - 为什么不能使用通配符 (?) 作为参数类型、字段、局部变量或方法的返回类型?

关于泛型通配符的 Oracle文档说,

通配符可用于多种情况:作为参数字段局部变量的类型;有时作为返回类型 (尽管更具体的是更好的编程实践)。

我在下面的课程中尝试了所有四个,并且每个都得到了编译器错误。为什么?我究竟做错了什么?

0 投票
1 回答
556 浏览

scala - 为什么 scala 无法从 2 个函数推断通配符类型?

我定义了以下函数:

在这种情况下, scalaTypesFor 和 scalaTypeOpt 都应该产生一个带有通配符参数的 TypeTag,它们应该是相同的类型。但是,编译器给了我以下错误:

类型推断有什么问题以及如何解决?

0 投票
1 回答
255 浏览

java - Java中无界通配符和泛型类型的使用有什么区别?

如果我们可以使用 Generic 类型解决问题,为什么 Java 提供了 Unbounded 通配符。例如

谁能帮我理解Method 2是否可以解决我们的要求,那么为什么我们需要Method 1。意思是,哪个问题可以使用无界通配符解决,而不能使用通用方法类型(例如方法 2)解决?

0 投票
4 回答
643 浏览

java - (?) 通配符泛型类型的不规则性

我相信?泛型中的类型是特定的未知类型。这意味着,声明该类型的列表将阻止我们向其中添加任何类型的对象。

编译器按预期给出错误。

但是当未知类型是二级泛型时,编译器似乎并不关心。

我想可能编译器根本不关心第二级的泛型参数,但事实并非如此,

那么,为什么编译器允许我们在第二个示例中只接受未知元素(因此没有任何元素)时添加任何类型的元素?

注意:编译器 Java 1.8

0 投票
0 回答
35 浏览

java - 无界通配符在现实生活中的用法

据我了解,无界通配符语句 ( ?) 只能在方法参数级别使用,并且只能用于集合。

有人可以从他或她的真实经历中举一个例子,这对我有帮助吗?我的意思是一个使用无界通配符作为一些类似生产分配的解决方案的示例。

提前致谢!

0 投票
2 回答
163 浏览

java - 将使用通配符的方法覆盖从 Java 转换为 Scala

我有一个 Java 方法签名,似乎无法转换为 Java 中的签名。

这是Java代码:

这里是我希望等效的 Scala 代码:

但是,当使用 sbt 和 Scala 2.11.8 进行编译时,出现以下错误:

类 InjectorListCellRenderer 需要是抽象的,因为类型为 (x$1: javax.swing.JList[_ <: Object], x$2: Object, x$3: Int, x$4: Boolean, x$5: Boolean 的 trait ListCellRenderer 中的方法 getListCellRendererComponent )java.awt.Component 未定义

可以在此处找到基类 DefaultListCellRenderer 的文档。

我似乎无法用我自己的代码重现这个问题。