没有在ObservableSet forEach中丢失通配符的通用类参数类型

杰夫

我试图了解以下内容,以及为什么会这样:

我有一堂课:

public abstract class ProducerType<T extends BulkItem> extends SomeClass<T> {
    public ObservableSet<ProductType> getProductTypes() {
        return productTypes;
    }
}

在另一个类中,我有一个方法:

private void buildChildActivities(ProducerType<?> type) {
    type.getProductTypes().forEach((ProductType pt) -> {
        // do stuff
    });
}

我最初是缺少此方法<?>ProducerType参数,因此它是:

private void buildChildActivities(ProducerType type) {

这导致在laEmbda消费者中丢失了forEach中返回的成员类型。<T>通用已定义的方法,没有效果ProducerType或将其设置返回,所以我不知道为什么它会失败,且不通配符呢?

灵魂大师

使用泛型时,您可以通过不提供类型参数选择退出这就是原始类型

现在的线索是:通过在方法签名中选择泛型世界,该方法完全使用原始类型。这意味着该方法type.getProductTypes()现在ObservableSet在您的buildChildActivities方法内部返回原始值现在,此set类型显然不包含任何类型信息,因此编译器必须采用Object

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有类型参数的Java通用类实例化

为什么在通用类中不能有采用不同通用类型参数的方法?

具有通用Java的类型参数类

执行类字段是相同的通用类型没有指定的类类型参数

在Typescript中,为什么我的通用抽象类在尝试实现它时没有找到类型参数?

有没有一种方法可以在类类型的定义之间重用通用通配符?

有没有办法找到Java中模板(通用)参数的类型?

通用类型。没有装箱转换或类型参数转换

类模板的参数列表丢失,但VisualC ++没有

将通用类用于没有通用参数的通用参数库

具有多个类的Java通用通配符

该类型不能用作通用类型或方法中的类型参数'TTo'。没有隐式引用转换

该类型不能用作通用类型或方法'BaseController <T>'中的类型参数'T'。没有隐式引用

没有参数的通用方法

没有参数的通用方法

类中的ostream没有类型

有没有一种方法可以将通用类型作为类中的列表?

没有通用对象参数的通用接口

Dart中具有通用类型参数的回调

转换具有类签名中通用属性的具体类型

具有通用类型的类

在没有TypeTag的Scala中反映超类的值类型参数

通过Dart中的子类参数传递超类对象时没有类型错误

通用方法中没有装箱的原始类型转换

编写通用包装器:有条件地将模板参数中的不同类型映射到单个类内部类型

为什么Swift中没有通用的基类?

是否可以创建没有类型参数的泛型类?

没有参数时如何获取泛型类型的类?

无法编译没有类型参数的实现接口的类