如何传递未知类在ResponseEntity中键入<>

时间:2018-03-08 08:44:03

标签: java generics

CaseOutlineHeader

班级parameterTypes是我想要改变的。 ResponseEntity<parameterTypes> returnValue = (ResponseEntity<parameterTypes>) result;变量包含我想在ResponseEntity&lt;&gt;标记内传递的类的名称。如果我想传递不同的班级名称怎么办?我该怎么做才能灵活接受不同的班级名称?

如果我这样做:weather_dict

它会说错误parameterTypes无法解析为类型。

2 个答案:

答案 0 :(得分:1)

问题是你的AOP方法需要将结果转换为某种东西才能获得记录所需的代码值。必须提前知道某些内容,因为您无法在注释中使用类型参数,因此无法将其传递给AOP方法。这意味着您在AOP中访问的所有方法都必须来自已知接口,如下所示:

public interface LogCodeProvider {
    String getLogCode();
}

public class CaseOutlineHeader implements LogCodeProvider {
    @Override
    public String getLogCode() {
        return "My Code";
    }
}

然后在你的AOP方法中你可以这样做:

@SuppressWarnings("unchecked")
ResponseEntity<LogCodeProvider> returnValue = ResponseEntity<LogCodeProvider>) result;

result = etisLog.trasactionDetail().toString()+" "+returnValue.getBody().getLogCode();

在我的例子中,我实现了特殊的方法getLogCode(),它返回一个字符串,因此每个类都可以准确地决定输出什么。

然而,重用结果变量来存储从etisLog.trasactionDetail()返回的值确实令人困惑。

答案 1 :(得分:0)

下面是示例代码,

   ResponseEntity<?> anyRandomMethod(){
    if(any condition){
      return new ResponseEntity<Animal>(new Animal(), httpstatus.OK);
    }else{
      return new ResponseEntity<SpaceShip>(new SpaceShip(), httpstatus.OK);
    }

    }