获取参数化类型T的Class对象,而不使用T的实例

时间:2016-11-17 13:07:34

标签: java generics

我正在尝试创建一个抽象类,它有两个方法aggregatewriteHeader。两种方法都调用具有Class<?>参数的静态方法。它看起来像这样:

public abstract class AbstractExtractLineMapper<T extends BaseObject> implements LineAggregator<T>, FlatFileHeaderCallback {
  @Override
  public void writeHeader(Writer writer) throws IOException {
    TreeSet<CSVdata> csvElements = CSVDataGenerator.loadCSVstructureFromAnnotations(CLASS<?> NEEDED);
    [...]
    writer.write(sb.toString());
  }

  @Override
  public String aggregate(T object) {
    TreeSet<CSVdata> csvElements = CSVDataGenerator.loadCSVstructureFromAnnotations(object.getClass());
    [...]
    return sb.toString();
  }
}

对于aggregate,我有一个T实例,我可以在其上调用getClass()。但我找不到用于替换Class<?> NEEDED方法的writeHeader的编译代码。请注意,在writeHeader之前调用aggregate,因为它会写入CSV文件的标头。在某些情况下,根本不会调用aggregate(如果要写入的CSV文件没有行,只有标题)。

正如你们中的一些人可能已经注意到的,这些接口来自Spring框架(批处理模块),但我不认为需要这些信息来回答。

0 个答案:

没有答案