定义策略
interface SplitStrategy<T> {
public T conver(String ele);
public T[] getArray();
}
实现类示例
class LongSplitStrategy implements SplitStrategy<Long> {
@Override
public Long conver(String ele) {
return Long.parseLong(ele);
}
@Override
public Long[] getArray() {
return new Long[0];
}
}
用法
package com.zasd.project.tool;
import java.util.ArrayList;
import java.util.List;
public class StringTool {
public static LongSplitStrategy LONG_SPLIT_STRATEGY = new LongSplitStrategy();
public static <T> T[] split(String source, String pattern, SplitStrategy<T> strategy) {
String[] strArray = source.split(pattern);
List<T> list = new ArrayList<T>(strArray.length);
for (String ele : strArray) {
list.add(strategy.conver(ele));
}
return list.toArray(strategy.getArray());
}
public static void main(String[] args) {
StringTool.split("1,2,3", ",", new LongSplitStrategy());
}
}
class LongSplitStrategy implements SplitStrategy<Long> {
@Override
public Long conver(String ele) {
return Long.parseLong(ele);
}
@Override
public Long[] getArray() {
return new Long[0];
}
}
interface SplitStrategy<T> {
public T conver(String ele);
public T[] getArray();
}