我々は以下のJavaアノテーション内のクラスを初期化するにはどうすればよいですか?
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) {
}
を渡す前に、アノテーションのパラメータに渡す必要があるが、それを初期化したいクラスが注釈である:@Analyzer(IMPL = StandardAnalyzer <で
@Fields({ @Field(index = Index.YES, store = Store.NO, analyzer = @Analyzer(impl = StandardAnalyzer.class)
- I引数、つまりStandardAnalyzer(バージョン、ストップワード)を渡したいと思いますが、新しいを使用してみましたが失敗しました。
アナライザーの注釈の詳細は次のとおりです。
@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 "";
}
アノテーションを渡す前にクラスを初期化する方法はありますか?
*クラス*は初期化しません。インスタンス化*します。つまり、インスタンス(オブジェクト)を作成し、*インスタンス*を初期化します。したがって、渡すものが真のオブジェクトではなくクラスオブジェクトであれば、初期化することはできません。クラスではなくオブジェクトを渡すのはどうですか?コンパイル時にパラメータが何であるか知っていますか? – RealSkeptic
パラメータがあります。Version.LUCENE_32、Collections.EMPTY_SET – fatherazrael
*アナライザ*注釈でクラスに注釈を付ける必要があります。このアノテーション内では、より特殊なアナライザクラスを記述するパラメータを定義します。次に、アノテーションを介してこれらのパラメータにアクセスできます。 – Guybrush