ASSUM I具有以下扩展功能:
inline fun <reified R> Any.getPrivateProperty(variableName: String): R { … }
我可以非常方便地用类似于s.getPrivateProperty<Int>("height")
的东西来调用它,这是一个类型为Int
的表达式.
现在,我想确保该函数只在非可选类型上定义.我使用了绝对不可为空的符号:
inline fun <T: Any, reified R> T.getPrivateProperty(variableName: String): R { … }
这达到了目的,但是,因为我有一个必须显式的类型参数,所以现在我实际上必须同时给出这两个参数.例如:s.getPrivateProperty<Shape, Int>("height")
.
有可能避免那in general美元吗?有没有其他方法可以避免here,即只在非可选类型上定义扩展函数?