作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否有任何方法可以将注释用作泛型的类型参数并确定提供的输入的实例?本质上,我只想允许使用特定注释的对象被方法接受,并使用类型转换来确定基础类型。
我尝试用注释标记通用类型,但是当我尝试转换模型时,出现错误:“不兼容的类型:UsesAnnotation和MyAnnotation”
这是有道理的,因为我没有扩展MyAnnotation,所以只是在上面标记UsesAnnotation。但是有办法使这项工作吗?我只想将输入限制为使用注释的实例,然后找出作为输入提供的类型。
注释:
@MustBeDocumented
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class MyAnnotation
abstract class MyFactory<in t: Any> {
...
abstract fun genericMethod(model: T): Int
...
}
class MyFactoryImplementation<MyAnnotationType> {
...
override fun genericMethod(model: MyAnnotation): Int {
return when (model) {
is UsesAnnotation -> 1
else -> 0
}
...
}
@MyAnnotation
class UsesAnnotation
最佳答案
RUNTIME
保留的批注进行批注。为此,您需要将kotlin-reflect
添加到您的类路径中。inline fun <reified T : Any> isAnnotatedWith(t: T, annotationClass: KClass<*>) =
isAnnotated(t::class, annotationClass)
fun isAnnotated(inputClass: KClass<*>, annotationClass: KClass<*>) =
inputClass.annotations.any { it.annotationClass == annotationClass }
isAnnotatedWith
中,并获得结果。
关于generics - Kotlin批注作为通用函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980170/
RestTemplate的getForObject方法将忽略类上的@JsonIgnoreProperties(ignoreUnknown = true)批注。 例如。为了 @JsonIgnorePro
我试图将 PDF 注释的内容转换为字符串,以便我可以将该信息存储在数据库中以供搜索。 有谁知道如何使用 iText/iTextSharp 完成此操作? 最佳答案 是的,但具体细节实际上取决于您所谈论的
我正在使用 Spring 3.1.1.RELEASE 和 Hibernate 4.1.0.Final。尽管我将相关的方法调用包装在 @Transactional 注释中,但我收到“无法初始化代理 -
我是一名优秀的程序员,十分优秀!