gpt4 book ai didi

java - 将泛型类传递给注解

转载 作者:行者123 更新时间:2023-11-30 09:59:09 27 4
gpt4 key购买 nike

在我使用的测试框架中,有一个 Precondition接受类并调用 call() 的注解运行时在其中的方法。

测试框架的核心模块:

前提注解

public @interface Precondition {
Class<? extends Scriptlet<? extends Context>> scriptlet();
String value() default Constants.EMPTY_STRING;
}

脚本

public interface Scriptlet<V> extends Callable<V> {
}

上下文

public interface Context {
}

如果我将以下前提条件类传递给 Precondition注释不会有错误。

CommonContextInit 前置条件类

class CommonContextInit implements Scriptlet<DataModel>{

CommonContextInit(Object script,String value){
}

@override
public DataModel call() throws Exception {
return null;
}
}

脚本

@Precondition(scriptlet=CommonContextInit.class)

但我想制作CommonContextInit一个通用的,用户可以在其中传递 scriptlet 的类型,所以我更改了 CommonContextInit类如下

CommonContextInit 前置条件类

class CommonContextInit<T extends Context> implements Scriptlet<T>{

CommonContextInit(Object script,String value){
}

@override
public T call() throws Exception {
return null;
}
}

但这里的问题是我不知道如何将类(class)传递给 Precondition .以下我已经尝试过,但看起来它是完全无效的语法。

// ERROR: The annotation @Precondition is disallowed for this location.
@Precondition(scriptlet=CommonContextInit<DataModel>.class)

我应该如何传递 ClassCommonContextInit<DataModel>Precondition

最佳答案

为了扩展我的评论,你应该有类似的东西

class DataModelInstance extends CommonContextInit<DataModel>  implements Scriptlet<DataModel>{
DataModelInstance(Object script,String value){
super(script, value);
}
//other overrides
}

然后调用@Precondition(scriptlet=DataModelInstance.class)

关于java - 将泛型类传递给注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59133496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com