Java方法中的动态返回类型
我在这里多次看到类似的问题,但有一个很大的不同。
在其他问题中,返回类型将由参数确定。我想要/需要做的是通过解析后的值确定返回类型byte[]
。从我收集到的信息来看,以下方法可行:
public Comparable getParam(String param, byte[] data) { if(param.equals("some boolean variable")
return data[0] != 0;
else(param.equals("some float variable") {
//create a new float, f, from some 4 bytes in data
return f;
}
return null;
}
我只是想确保在我搞砸任何东西之前,它有机会工作。提前致谢。
回答:
你做不到
Java返回类型必须是固定的基本类型或对象类。我敢肯定,您能做的最好的事情就是返回一个包装器类型,该包装器类型具有可获取各种可能类型的值的方法,以及一个内部枚举,该枚举类型指示哪种有效。
-–编辑—在丹妮丝更正之后!
public <Any> Any getParam(boolean b){return((Any)((Boolean)(!b)));
}
public <Any> Any getParam(float a) {
return((Any)((Float)(a+1)));
}
public <Any> Any getParam(Object b) {
return((Any)b);
}
public void test(){
boolean foo = getParam(true);
float bar = getParam(1.0f);
float mumble = getParam(this); // will get a class cast exception
}
您仍然需要为装箱物品和类型检查返回的值付出一些代价,当然,如果您的调用与getParam的实现实际执行的操作不一致,则将获得类强制转换异常。
以上是 Java方法中的动态返回类型 的全部内容, 来源链接: utcz.com/qa/427408.html