0

Apache Velocity を使用してクラスのインターフェイスを生成するユーティリティを作成しています。現在、次の dtos を使用しています。

public class ClassDescriptor {
  private String name;
  private List<MethodDescriptor> methods;
  // getters/setters
}

public class MethodDescriptor {
  private String name;
  private String returnType;
  private List<ParamDescriptor> parameters;
  // getters/setters
}

public class ParamDescriptor {
  public String name;
  public String type;
  public List<String> generics;
  // getters/setters
}

現時点で使用されているコードは次のとおりです。

final Class<?> clazz;
final ClassDescriptor classDescriptor = new ClassDescriptor();
final List<MethodDescriptor> methodDescriptors = new ArrayList<MethodDescriptor>();
for (Method method : clazz.getDeclaredMethods()) {
  final MethodDescriptor methodDescriptor = new MethodDescriptor();
  final Paranamer paranamer = new AdaptiveParanamer();
  final String[] parameterNames = paranamer.lookupParameterNames(method, false);
  final List<ParamDescriptor> paramDescriptors = new ArrayList<ParamDescriptor>();

  for (int i = 0; i < method.getParameterTypes().length; i++) {
    final ParamDescriptor paramDescriptor = new ParamDescriptor();
    paramDescriptor.setName(parameterNames[i]);
    paramDescriptors.add(paramDescriptor);
    paramDescriptor.setType(method.getGenericParameterTypes()[i].toString().replace("class ", ""));
  }
  methodDescriptor.setParameters(paramDescriptors);
  methodDescriptor.setName(method.getName());

  methodDescriptor.setReturnType(method.getGenericReturnType().toString());
  methodDescriptors.add(methodDescriptor);
}
classDescriptor.setMethods(methodDescriptors);
classDescriptor.setName(simpleName);

??????? パラメータのジェネリックのリストを取得するコードを含める必要がありますが、それが問題です。それを行う方法はまだ見つかりません。次のテストクラスを使用しています。

public class TestDto {
  public void test(Map<Double, Integer> test) {
  }
}

どうすればこの情報を入手できますか? 私はすでにParameterizedType運がないことを試しました。

更新:上記のコードは現在機能しています。

4

1 に答える 1