создать интерфейс (используя шаблон):
package util.filter;
public interface Filter<INPUT,OUTPUT> {
public OUTPUT filter(INPUT mes);
}
и внедренный класс (только для теста):
package util.filter;
public static class TestImplFilter implements Filter<Integer,String>{
public String filter(Integer i){
return "Hello World!";
}
}
Я могу использовать этот код для тестирования:
Filter<Integer,String> f=new TestImplFilter();
System.out.println(f.filter(123));
//output: Hello World!
Теперь я хочу создать статический метод
, используя путь к классу impl (util.filter.TestImplFilter
) в качестве аргумента ,
и INPUT в качестве второгоаргумент и вернуть OUTPUT .
, поэтому я написал следующий код:
private static Object createInstance(String classPath) {
try {
Class<?> tClass = Class.forName(classPath);
if (tClass != null) {
return tClass.newInstance();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public final static Filter<?,?> getFilter(String path){
return (Filter<?,?>)createInstance(path);
}
//my problem in here:
public final static OUTPUT filter(String path,INPUT mes){
Filter<?,?> filter = (Filter<?, ?>) createInstance(path);
return filter.filter(mes);
}
моя проблема в статическом методе filter(String path,INPUT mes)
, этот код является ошибкой.
как я могу это исправить и реализовать этот метод?
спасибо за помощь:)