All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.salomonbrys.kodein.TKodein.kt Maven / Gradle / Ivy

package com.github.salomonbrys.kodein

import java.lang.reflect.Type

/**
 * Java access to Kodein dependency injection.

 * Each method works either with a Class or with a TypeToken.
 * To create a TypeToken, you must use the following syntax: `new TypeToken<Type<SubType>>(){}`
 */
@Suppress("UNCHECKED_CAST", "unused")
interface TKodein {

    fun factory(argType: Type, type: Type, tag: Any? = null): (Any) -> Any

    fun  factory(argType: Type, type: Class, tag: Any? = null): (Any) -> T = factory(argType, type as Type, tag) as (Any) -> T

    fun  factory(argType: Type, type: TypeToken, tag: Any? = null): (Any) -> T = factory(argType, type.type, tag) as (Any) -> T

    fun  factory(argType: Class, type: Type, tag: Any? = null): (A) -> Any = factory(argType as Type, type, tag) as (A) -> Any

    fun  factory(argType: Class, type: Class, tag: Any? = null): (A) -> T = factory(argType as Type, type as Type, tag) as (A) -> T

    fun  factory(argType: Class, type: TypeToken, tag: Any? = null): (A) -> T = factory(argType as Type, type.type, tag) as (A) -> T

    fun  factory(argType: TypeToken, type: Type, tag: Any? = null): (A) -> Any = factory(argType.type, type, tag) as (A) -> Any

    fun  factory(argType: TypeToken, type: Class, tag: Any? = null): (A) -> T = factory(argType.type, type as Type, tag) as (A) -> T

    fun  factory(argType: TypeToken, type: TypeToken, tag: Any? = null): (A) -> T = factory(argType.type, type.type, tag) as (A) -> T



    fun factoryOrNull(argType: Type, type: Type, tag: Any? = null): ((Any) -> Any)?

    fun  factoryOrNull(argType: Type, type: Class, tag: Any? = null): ((Any) -> T)? = factoryOrNull(argType, type as Type, tag) as ((Any) -> T)?

    fun  factoryOrNull(argType: Type, type: TypeToken, tag: Any? = null): ((Any) -> T)? = factoryOrNull(argType, type.type, tag) as ((Any) -> T)?

    fun  factoryOrNull(argType: Class, type: Type, tag: Any? = null): ((A) -> Any)? = factoryOrNull(argType as Type, type, tag) as ((A) -> Any)?

    fun  factoryOrNull(argType: Class, type: Class, tag: Any? = null): ((A) -> T)? = factoryOrNull(argType as Type, type as Type, tag) as ((A) -> T)?

    fun  factoryOrNull(argType: Class, type: TypeToken, tag: Any? = null): ((A) -> T)? = factoryOrNull(argType as Type, type.type, tag) as ((A) -> T)?

    fun  factoryOrNull(argType: TypeToken, type: Type, tag: Any? = null): ((A) -> Any)? = factoryOrNull(argType.type, type, tag) as ((A) -> Any)?

    fun  factoryOrNull(argType: TypeToken, type: Class, tag: Any? = null): ((A) -> T)? = factoryOrNull(argType.type, type as Type, tag) as ((A) -> T)?

    fun  factoryOrNull(argType: TypeToken, type: TypeToken, tag: Any? = null): ((A) -> T)? = factoryOrNull(argType.type, type.type, tag) as ((A) -> T)?



    fun provider(type: Type, tag: Any? = null): () -> Any

    fun  provider(type: Class, tag: Any? = null): () -> T = provider(type as Type, tag) as () -> T

    fun  provider(type: TypeToken, tag: Any? = null): () -> T = provider(type.type, tag) as () -> T



    fun providerOrNull(type: Type, tag: Any? = null): (() -> Any)?

    fun  providerOrNull(type: Class, tag: Any? = null): (() -> T)? = providerOrNull(type as Type, tag) as (() -> T)?

    fun  providerOrNull(type: TypeToken, tag: Any? = null): (() -> T)? = providerOrNull(type.type, tag) as (() -> T)?



    fun instance(type: Type, tag: Any? = null): Any

    fun  instance(type: Class, tag: Any? = null): T = instance(type as Type, tag) as T

    fun  instance(type: TypeToken, tag: Any? = null): T = instance(type.type, tag) as T



    fun instanceOrNull(type: Type, tag: Any? = null): Any?

    fun  instanceOrNull(type: Class, tag: Any? = null): T? = instanceOrNull(type as Type, tag) as T?

    fun  instanceOrNull(type: TypeToken, tag: Any? = null): T? = instanceOrNull(type.type, tag) as T?
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy