Нет, вы не можете этого сделать.Java просто не имеет тех же понятий, что и C.
Вы можете создать класс, который будет вести себя как структура:
public class Structure {
public int field1;
public String field2;
}
, и у вас может быть конструктор, который принимает массив илибайты или DataInput
для чтения байтов:
public class Structure {
...
public Structure(byte[] data) {
this(new DataInputStream(new ByteArrayInputStream(data)));
}
public Structure(DataInput in) {
field1 = in.readInt();
field2 = in.readUTF();
}
}
, затем считывание байтов с провода и накачка их в Structures
:
byte[] bytes = network.read();
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(bytes));
Structure structure1 = new Structure(stream);
Structure structure2 = new Structure(stream);
...
Это не так кратко, как C, ноэто довольно близкоОбратите внимание, что интерфейс DataInput
полностью удаляет любые искажения с порядком байтов от вашего имени, так что это определенно преимущество по сравнению с C.