JavaPOET - 只有类有超类,不是接口
问题描述:
我想下面生成使用JavaPOET库,但 我得到为JPA库代码“只类有超类,而不是接口”错误。JavaPOET - 只有类有超类,不是接口
@Repository
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
}
这里是JavaPOET代码我试图..用于产生界面延伸的类
TypeSpec userRepository = TypeSpec.interfaceBuilder("UserRepository")
.addAnnotation(Repository.class)
.addModifiers(Modifier.PUBLIC)
.superclass(ParameterizedTypeName.get(ClassName.get(PagingAndSortingRepository.class),
ClassName.get(User.class),
ClassName.get(Long.class)))
.build();
任何溶液/最佳做法? 谢谢,
答
的信息是相当清楚的:
“只类有超类,而不是接口” 的错误。
TypeSpec.Builder.superclass()
确实只允许指定类。
要指定接口,请使用TypeSpec.Builder.addSuperinterface()
。
它将给:
TypeSpec userRepository = TypeSpec.interfaceBuilder("UserRepository")
.addAnnotation(Repository.class)
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(ParameterizedTypeName.get(ClassName.get(PagingAndSortingRepository.class),
ClassName.get(User.class),
ClassName.get(Long.class)))
.build();
应该产生这样的代码:
@org.springframework.data.repository.Repository
public interface UserRepository extends org.springframework.data.repository.PagingAndSortingRepository<User, java.lang.Long> {
}
您可以找到JavaPOET项目的单元测试完整的例子。
查看git。
非常感谢它的工作..你还可以建议我一种在运行时编译这个生成的代码的方式,以便它可以在不重新部署的情况下工作。据我所知,JavaPOET没有这种能力吗?如果你想让我为此发布另一个问题。没关系。 – mrgenco
不客气。对不起,我不知道这个lib很多。这个问题可能会让你感兴趣:https://github.com/square/javapoet/pull/396。 – davidxxx