I’ve seen a question similar to this multiple times here, but there is one big difference.
In the other questions, the return type is to be determined by the parameter. What I want/need to do is determine the return type by the parsed value of a byte[]. From what I’ve gathered, the following could work:
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;
}
I just want to make sure that this has a chance of working before I screw anything up. Thanks in advance.
You can’t do it. Java return types have to be either a fixed fundamental type
or an object class. I’m pretty sure the best you can do is return a wrapper type
which has methods to fetch various possible types of values, and an internal enum
which says which one is valid.
— edit — after Danieth’s correction!
You still incur some penalties for boxing items and type checking
the returned values, and of course if your call isn’t consistent with
what the implementations of getParam actually do, you’ll get a class
cast exception.