gpt4 book ai didi

java - 如何在 Java 注释中初始化一个类?

转载 作者:行者123 更新时间:2023-11-30 10:31:01 24 4
gpt4 key购买 nike

我们有一个类,我们需要将其传递给注释的参数,但希望在传递之前对其进行初始化

public final class StandardAnalyzer extends StopwordAnalyzerBase {

public static final int DEFAULT_MAX_TOKEN_LENGTH = 255;
private int maxTokenLength;
private final boolean replaceInvalidAcronym;
public static final Set<?> STOP_WORDS_SET;

public StandardAnalyzer(Version matchVersion, Set<?> stopWords) {

}

注释如下:

 @Fields({ @Field(index = Index.YES, store = Store.NO, analyzer = @Analyzer(impl = StandardAnalyzer.class)

在@Analyzer(impl = StandardAnalyzer <- 我想传递参数,即 StandardAnalyzer(Version, stopwords),我尝试使用 new 但失败了。

以下是 Analyzer 的注释详细信息:

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = {ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
@Documented
public @interface Analyzer {
public Class<?> impl() default void.class; <--- Here is where i want to pass
public String definition() default "";
}

有没有办法在传入注解之前初始化类?

最佳答案

实际上,可以赋予注解的类型仅限于原语、字符串、类、枚举、注解和上述类型的数组。因此,例如,您不能在此处提供一组停用词。您在这里引用的是构造函数,构造函数将创建实例。但是您可以做的是将构造函数参数作为类提供:

public static class MyAnalyzer extends StandardAnalyzer {
public MyAnalyzer() { super(Version.LUCENE_32, Collections.EMPTY_SET); }
}
@Fields({ @Field(analyzer = @Analyzer(impl = MyAnalyzer.class) })

根据您的编码规则,这种方法可能存在内部类与方法混合的问题。因此,也许您在某个地方收集此类类(class)可能会感觉更好。另一个缺点是这些类需要公开才能真正拥有一个公共(public)构造函数。

关于java - 如何在 Java 注释中初始化一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43467976/

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