【发布时间】:2015-12-06 20:40:04
【问题描述】:
Firebase 的 snapshot.getValue() 预计调用如下:
snapshot?.getValue(Person::class.java)
但是我想用通过类声明传递给类的通用参数替换Person,即
class DataQuery<T : IModel>
并使用该通用参数执行以下操作:
snapshot?.getValue(T::class.java)
但是当我尝试这样做时,我收到一条错误消息,指出
只有类可以用在类文字的左侧
是否可以像在 C# 中那样对泛型参数提供类约束,或者我可以使用其他一些语法来获取泛型参数的类型信息?
【问题讨论】:
-
您能否为您的问题提供更多上下文,因为具有类型参数的函数与具有类型参数的类将有两个不同的答案。您接受了涵盖其中一种情况的仅链接答案。
-
您的问题应该显示导致错误的代码的完整上下文。在某些情况下,您的代码是正确的(如果我们想象它在具有具体类型的内联函数中),在其他情况下则不然。泛型可能有两种情况,但你没有说清楚。