AspectJ : String.splitをすこーしだけ便利にする。

この前、String.split("\\s")を実行したら、\sが全角スペースを含んでいなくて、このあたりやっぱりjavaは気が利いていないと思った次第です。で、試しにAspectJで無理くり実装してみた

package test;

public aspect Pattern {
	
	pointcut stringSplit(String regex) : call(public * java.lang.String.split(String)) && args(regex) ;
	
	Object around(String regex): stringSplit(regex){
		System.out.println(regex);
		if("\\s".equals(regex)){
			regex="[\\s ]";
		}
		return proceed(regex);
		
	}

}

ポイントは、

  • executionじゃなくて、callでポイントカットを宣言すること

くらいでしょうか。プロダクトで使うかどうかは微妙ですが、AspectJ、こんなこともできます、と。