我在这里多次看到类似的问题,但有一个很大的不同。
在其他问题中,返回类型将由参数确定。我想要/需要做的是通过解析后的值确定返回类型byte[]。从我收集到的信息来看,以下方法可行:
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的实现实际执行的操作不一致,则将获得类强制转换异常。