CSV解析準備-3

そして最後、@Interceptとpublic final class InterceptMatcher
は、前に書いたので、最後に、、、

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * CsvparserをimplementsするCSV解析作業クラスの変数フィールドで、
 * CSV1行を String にすることを約束する変数フィールドに付与する。
 * boolean 値 = true  : 括り文字有り
 *            = false : 括り文字無し
 *            
 *      public class Sample  implements Csvparser{
 *          @CsvArray(true) private String
 strs;  // strs[0] が、CSV 1列目データ
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface CsvArray{
   boolean value();
}
========================
import java.io.File;
/**
 * CSV解析インターフェース.
 * CSV解析→任意の処理をコールバックで実行するためのインターフェース.
 * CSVファイル解析→1行単位にこのインターフェースで指定する parse メソッドが実行され
 * @CsvArray を付与した String フィールドに、split した結果が格納されて、
 * parse メソッドで参照できる。
 * 必ず、CsvparseBuilder によって生成しなければならない。
 * 【使用例】
 *   // Csvparser 実装クラス
 *      public class Sample implements Csvparser{
 *         @CsvArray(false)  private String
 strs;
 *         @Intercept(Csvparser.CSV_PARSE)
 *         public void parse(File file){
 *            // strs[0] は、カンマ区切りで split した先頭の文字列
 *         
 *         }
 *      }
 *   // 呼び出し
 *     Csvparser csv = CsvparseBuilder.create(Sample.class);
 *      csv.parse(new File(csvPath));
 *      // ファイルの読込等の記述は、呼び出し側で書かない。
 */
public interface Csvparser{
   
   /**
    * CSV解析メソッド識別子.
    * @Interceptの引数で、 parserメソッド Csvparser#parse(File) に付与して 
    * splitを約束させる識別子
    */
   public final static String CSV_PARSE = "CSV_PARSE";
   
   /**
    * CSV解析実行.
    * CSV 1行毎に実行される。
    * @param file 対象CSVファイル
    */
   public void parse(File file);
}
===========
1年前に思いついたことの整理だが、
やっぱり
@Intercept(Csvparser.CSV_PARSE)
public void parse(File file){
と書くのは、くどい感じがする。