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

回到顶部