Podľa vzoru flatbuffers na c ++,Funkcia GetMonster je generovaná ako monštrum definované ako root_type. Schéma môže mať samozrejme iba 1 root_type. čo obmedzovalo, že z bufetu na obj. rovnako ako rozbaliť
Pokiaľ ide o javu, každý typ definovaný v schéme má vygenerovanú funkciu „getRootAs ...“, čo je veľmi výhodné. každý typ môže byť ľahko prevedený z ByteBuffer priamo.
Takže v prípade použitia sieťových hier s c ++ existujúveľa typov na posielanie cez sieť bez priameho vzťahu. máme definovať jeden súbor schém pre každý typ? za účelom generovania Get / Unpack?
PS: Chápem, že to dokážem sám
auto nonRootCustomTypeObj = flatbuffers::GetRoot<NonRootCustomType>(fbb.GetBufferPointer());
ale zaujímalo by ma, prečo nie je takáto funkcia konverzie Get / Unpack dostupná pre všetky typy, ale iba pre root_type špecificky v c ++?
odpovede:
0 pre odpoveď č. 1Takto sa ukázalo, ako sa API ukázali, pretože Java šablóny nemajú rovnaké schopnosti ako C ++. Ako ste povedali, ak chcete použiť viac koreňov, použijete skrátenú verziu.