Замена typedef в Java

252
14 марта 2017, 13:19

Какой аналог typedef из Си есть в Java? Или как это можно грамотно обойти? Например, работаю с Android-NDK, в Си есть функция, ее прототип:

LONG List_File_Card(SCARDHANDLE gCardHandle, BYTE *buffer, DWORD *bufferLength);

Типы LONG,SCARDHANDLE,BYTE,DWORD определены в h-никах, по аналогии typedef long LONG;

В Java коде определяю эту же функцию как

public static native LONG List_File_Card(SCARDHANDLE gCardHandle, BYTE *buffer, DWORD *bufferLength);

Нужно, чтобы в эту функцию поступали и возвращались такие же имена типов данных, как и в Си. Как их можно и лучше определить в Java? С помощью классов, интерфейсов, enum? Подскажите, пожалуйста.

Answer 1

typedef, либо похожего аналога, в Java нет.

Можно попробовать сделать эмуляцию через наследование:

public class LONG extends Long {}

Но это уже будет не примитивный тип, так что, я думаю, не стоит этим заниматься.

Answer 2

Батенька, у вас проблема не в typedef, а в маппинге сишных типов на Java типы:

Почитайте доку про маппинг сишных типов на Java.

На стороне C, вы должны декларировать функцию типа:

jlong <имя_пакета>_List_File_Card(<blah-blah);
READ ALSO
Два тулбара в одном Activity

Два тулбара в одном Activity

Есть Activity у которого есть свой тулбарВ этом activity два фрагмента, один из которых также содержит свой тулбар

222
После обновления Android Studio перестал работать Hierarchy Viewer

После обновления Android Studio перестал работать Hierarchy Viewer

При запуске Android Device Monitr не работает Hierarchy ViewerВо всех окнах пишет ошибку:

966
net::ERR_INCOMPLETE_CHUNKED_ENCODING tomcat8

net::ERR_INCOMPLETE_CHUNKED_ENCODING tomcat8

Подскажите пожалуйстаСтоит на Ubuntu 16

293
Resourcebundle de_DE и русские символы - иероглифы Java

Resourcebundle de_DE и русские символы - иероглифы Java

Подскажите пожалуйстаСделал перевод сайта при помощи Resourcebundle

221