Это МОЖЕТ быть сделано.Будет работать следующий код:
public byte BOOLEAN = 1;
public byte FLOAT = 2;
public static <Any> Any getParam(byte[] data) {
if (data[0] == BOOLEAN) {
return (Any)((Boolean)(boolean)(data[1] != 0));
} else if (data[0] == FLOAT) {
return (Any)((Float)(float)data[1]);
} else {
return null;
}
}
Используя универсальный тип для возвращаемого типа, любой метод Java может динамически возвращать любой объект или примитивные типы.Вы можете назвать дженерик как угодно, и в этом случае я назвал его «Любой».Используя этот код, вы избегаете приведения типа возврата при вызове метода.Вы можете использовать метод следующим образом:
byte[] data = new byte[] { 1, 5 };
boolean b = getParam(data);
data = new byte[] { 2, 5 };
float f = getParam(data);
Лучшее, что вы можете сделать без этого трюка, - это приведение объекта вручную:
float f = (float)getParam(data);
Динамические типы возврата Java могут уменьшить шаблон кода.