GH-2332 - Simplify generics declaration in Kotlin extensions.

This commit is contained in:
Oliver Drotbohm
2025-06-03 20:02:04 +02:00
parent c83c8e0801
commit 9d4096de93
2 changed files with 7 additions and 7 deletions

View File

@@ -43,7 +43,7 @@ inline infix fun Link.andAffordances(setup: WebMvcAffordanceBuilderDsl.() -> Uni
* @author Roland Kulcsár
* @since 1.0
*/
inline fun <reified C> afford(func: C.() -> Any): Affordance = afford(methodOn(C::class.java as Class<C & Any>).run(func))
inline fun <reified C : Any> afford(func: C.() -> Any): Affordance = afford(methodOn(C::class.java as Class<C>).run(func))
/**
* Provide an [Affordance]s DSL to help write idiomatic Kotlin code.
@@ -53,9 +53,9 @@ inline fun <reified C> afford(func: C.() -> Any): Affordance = afford(methodOn(C
*/
open class WebMvcAffordanceBuilderDsl(val affordances: MutableList<Affordance> = mutableListOf()) {
inline fun <reified C> afford(func: C.() -> Any) {
inline fun <reified C : Any> afford(func: C.() -> Any) {
val affordance = afford(methodOn(C::class.java as Class<C & Any>).func())
val affordance = afford(methodOn(C::class.java as Class<C>).func())
affordances.add(affordance)
}
}

View File

@@ -32,7 +32,7 @@ import kotlin.reflect.KClass
* @author Greg Turnquist
* @since 1.0
*/
inline fun <reified C> linkTo(func: C.() -> Any): WebMvcLinkBuilder = linkTo(methodOn(C::class.java as Class<C & Any>).run(func))
inline fun <reified C : Any> linkTo(func: C.() -> Any): WebMvcLinkBuilder = linkTo(methodOn(C::class.java as Class<C>).run(func))
/**
* Create a [Link] with the given [rel].
@@ -49,7 +49,7 @@ infix fun WebMvcLinkBuilder.withRel(rel: String): Link = withRel(rel)
* @author Roland Kulcsár
* @since 1.0
*/
fun <C, R : RepresentationModel<R>> R.add(controller: Class<C & Any>, links: WebMvcLinkBuilderDsl<C & Any, R>.(R) -> Unit): R {
fun <C : Any, R : RepresentationModel<R>> R.add(controller: Class<C>, links: WebMvcLinkBuilderDsl<C, R>.(R) -> Unit): R {
val builder = WebMvcLinkBuilderDsl(controller, this)
builder.links(this)
@@ -73,12 +73,12 @@ fun <C : Any, R : RepresentationModel<R>> R.add(controller: KClass<C>, links: We
* @author Roland Kulcsár
* @since 1.0
*/
open class WebMvcLinkBuilderDsl<C, R : RepresentationModel<R>>(val controller: Class<C & Any>, val resource: R) {
open class WebMvcLinkBuilderDsl<C : Any, R : RepresentationModel<R>>(val controller: Class<C>, val resource: R) {
/**
* Create a [WebMvcLinkBuilder] pointing to [func] method.
*/
fun <R> linkTo(func: C.() -> R & Any): WebMvcLinkBuilder = linkTo(methodOn(controller).run(func))
fun <R : Any> linkTo(func: C.() -> R): WebMvcLinkBuilder = linkTo(methodOn(controller).run(func))
/**
* Add a link with the given [rel] to the [resource].