public class RestControllerExample {
@GetMapping("/test")
public Test<String, Integer> req() {
return null;
}
static class Test<T, V> {
private T fieldT;
private V fieldV;
public T getFieldT() {
return fieldT;
}
public void setFieldT(T fieldT) {
this.fieldT = fieldT;
}
public V getFieldV() {
return fieldV;
}
public void setFieldV(V fieldV) {
this.fieldV = fieldV;
}
}
}
PsiClassReferenceType 是Test<String, Integer>. 我怎么知道fieldTisString和fieldVis Integer?
class Test<T, V>只是一個demo,由于欄位的順序不固定,所以無法使用該getParameters()方法獲取型別。有可能fieldT在之后宣告fieldV
uj5u.com熱心網友回復:
field.getType().substitute(classReferenceType.resolveGenerics().getSubstitutor())應該做的作業。
fieldT.getType()在你的例子中必須回傳TclassReferenceType.resolveGenerics()(回傳一對類及其替代者),在您的示例Test中T -> String, V -> Integer- 方法替換會將型別中的 T 替換為字串,將 V 替換為整數
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/462666.html
上一篇:IntelliJ自版本2022.1/java.lang.NoClassDefFoundError以來的問題
下一篇:VSC中沒有這樣的檔案或目錄
