在没有泛型类型的类中,我想声明一个类似于这些的相当复杂的泛型字段:
public class Client {
private Map<Class<T extends Serializable>, List<Consumer<S extends T>>> classToConsumerTry1;
private <T extends Serializable, S extends T> Map<Class<T>, List<Consumer<S>>> classToConsumerTry2;
}
Run Code Online (Sandbox Code Playgroud)
promblem是java编译器不会让我:)
所以我的问题是如何在不向我的类Client添加类型的情况下正确引入T和S.
我的目标是强制Class成为您选择的类的子类型Serializable和Consumer子类型Class.
我写了一个简短的程序,它不需要任何类,而只需要顶级函数.
从你编写的java代码中找到jar的位置
MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()
Run Code Online (Sandbox Code Playgroud)
但由于我没有在我的kotlin代码中声明任何类,我不知道如何获得类引用.
我目前的实施是这样的
class Ref
val jarPath = Ref::class.java.protectionDomain.codeSource.location.toURI().path
Run Code Online (Sandbox Code Playgroud)
这显然是非常糟糕的代码.
所以我的问题是,如何在不声明任何不必要的类的情况下在kotlin中获取类引用.任何提示赞赏:)