您的猜测是正确的:泛型构造函数
ResponseEntity(T, HttpStatus)
有
erased
参数类型
(Object, HttpStatus)
和
callConstructor
查找这些原始类型。
不幸的是,即使您使用
callConstructorWhere
的自定义谓词
JavaConstructorCall
,您只能访问
target owner
作为(原始)
JavaClass
,但不是
JavaParameterizedType
可以容纳特定类型的参数
T = String
在你的情况下。
所以我担心你的问题不能用当前版本的ArchUnit来解决。
用你的
spring-web.jar
现在,您可以使用
jar xf spring-web-*.jar
javap -v org/springframework/http/ResponseEntity.class \
| grep -A1 'ResponseEntity(T, org.springframework.http.HttpStatus)'
对于
spring-web-5.3.22.jar
,我得到:
public org.springframework.http.ResponseEntity(T, org.springframework.http.HttpStatus);
descriptor: (Ljava/lang/Object;Lorg/springframework/http/HttpStatus;)V