我正在构建一个 API,它使用抽象类来调用静态方法。一些Java伪代码:
public abstract class APIBaseClass {
public static List<?> myMethod(Class<?> clazz, MyConverter converter, List<Object> objects) {
return objects.stream()
.map(object -> converter.convertObjectToType(object, clazz))
.collect(Collectors.toList());
}
}
并且,在哪里myMethod
调用:
public abstract class MyAPIClass extends APIBaseClass {
public static List<MyClassType> invokingMethod(MyConverter converter, List<Object> objects) {
List<MyClassType> list = myMethod(MyClassType.class, converter, objects);
...
return list;
}
}
myMethod
按预期编译。而且,invokingMethod
由于类型不兼容,也无法按预期编译:
Required: List<blah.blah.blah.MyClassType>
Found: List<capture<?>>
如果我: (1) @SuppressWarnings("unchecked") oninvokingMethod
和 (2) 将 的结果myMethod
转换为 , 调用时的列表MyClassType
,即List<MyClassType> list = (List<MyClassType>) myMethod(MyClassType.class, converter, objects);
. 但是,对于任何使用 API 的人来说,这并不透明,这感觉不太理想。
我有哪些选项可以myMethod
返回调用它的类型列表 to invokingMethod
,同时维护我的抽象类和静态方法,同时理想地提高内部的可用性invokingMethod
?
欢迎任何建议或替代想法。
提前致谢。