gpt4 book ai didi

java - Kotlin 通用反射子类

转载 作者:行者123 更新时间:2023-11-30 01:54:09 25 4
gpt4 key购买 nike

我有一个函数需要 Class<GenericType<Constraint>> 。当我传递 GenericType<Constraint> 的子类时编译器错误并显示以下消息: Type Inference Failed. Expected Type Mismatch

但是,如果我将类型转换为它的父类(super class)型,它就可以正常运行(带有警告)。如何在不进行强制转换的情况下做到这一点?

open class Bag<T>

class IntBag: Bag<Int>()

fun testStuff(type: Class<Bag<Int>>) {
// Do stuff
}

testStuff(IntBag::class.java) // This won't compile
testStuff(IntBag::class.java as Class<Bag<Int>>) // This compiles with a warning, but runs fine

最佳答案

你必须使用方差: fun testStuff(type: Class<out Bag<Int>>)

https://kotlinlang.org/docs/reference/generics.html

关于java - Kotlin 通用反射子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com