Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要在Java中创建一个类,就像在C中创建一个结构一样_Java_C_Structure - Fatal编程技术网

需要在Java中创建一个类,就像在C中创建一个结构一样

需要在Java中创建一个类,就像在C中创建一个结构一样,java,c,structure,Java,C,Structure,我有一个像这样的C结构 typedef struct SKT_SubHeader_s { U32 subLength; U8 subCode; U8 subType; U8 subResult; U8 subCause; U8 subSrcMSISDN[RBT_SUBSCRIBER_NO_LEN]; U8 subDstMSISDN[RBT_SUBSCRIBER_NO_LEN];

我有一个像这样的C结构

typedef struct SKT_SubHeader_s
{
        U32 subLength;
        U8 subCode;
        U8 subType;
        U8 subResult;
        U8 subCause;
        U8 subSrcMSISDN[RBT_SUBSCRIBER_NO_LEN];
        U8 subDstMSISDN[RBT_SUBSCRIBER_NO_LEN];
        S8 subRsv[20];
        S16 subSrvType;
        S16 subSrvId;
        S16 subSndType;
        S16 subSndIdx;
        S8 subSndCode[RBT_TONE_ID_LEN];
        S8 subSndValue[RBT_TONE_ID_LEN];
        S32 subMsgId;
        U8 subBillFlag;
        S16 subGroupOrder;
        S8 subDate[9];
        S8 subGroupName[31];
        U8 subSpFlag;
        S8 subBillCode[21];
        S8 subReserve[30];
        U32 bodyLength;
        SKT_body_t bodyData[1];
}SKT_SubHeader_t;

我需要创建一个相同类型的java类,我可以从外部访问该类的值,并可以将其写入文件。

在我看来,您只需要创建一个将这些数据类型作为公共变量的类。您可能还需要初始化构造函数中的变量


同样,在Java中,将此类中的变量设置为private并公开
getters
setters

在我看来,似乎只需要创建一个将这些数据类型作为公共变量的类。您可能还需要初始化构造函数中的变量


此外,在Java中,将此类中的变量设置为private并公开
getters
setters

创建此类的对象,您将能够访问每个成员

Main.java

Skt_Subheader_s SKT_SubHeader_t = new SKT_SubHeader_s;
SKT_SubHeader_t.subLength = 10;
SKT_分目_.java

public class SKT_SubHeader_s
{
   public int subLength;
   public byte subCode;
   public byte subType;
   public byte subResult;
   public byte subCause;
   public byte subSrcMSISDN[RBT_SUBSCRIBER_NO_LEN];
   public byte subDstMSISDN[RBT_SUBSCRIBER_NO_LEN];
   public byte subRsv[20];
   public string subSrvType;
   public string subSrvId;
   public string subSndType;
   public string subSndIdx;
   public string subSndCode[RBT_TONE_ID_LEN];
   public string subSndValue[RBT_TONE_ID_LEN];
   public string subMsgId;
   public byte subBillFlag;
   public string subGroupOrder;
   public string subDate[9];
   public string subGroupName[31];
   public byte subSpFlag;
   public string subBillCode[21];
   public byte subReserve[30];
   public int bodyLength;
   public SKT_body_t bodyData[1]; 

   public SKT_Subheader_s()
   {
      //Constructor, Initialize your variables here
      //e.g.
      // sublength = 0;
      //etc...
   }
}

创建此类的对象,您将能够访问每个成员

Main.java

Skt_Subheader_s SKT_SubHeader_t = new SKT_SubHeader_s;
SKT_SubHeader_t.subLength = 10;
SKT_分目_.java

public class SKT_SubHeader_s
{
   public int subLength;
   public byte subCode;
   public byte subType;
   public byte subResult;
   public byte subCause;
   public byte subSrcMSISDN[RBT_SUBSCRIBER_NO_LEN];
   public byte subDstMSISDN[RBT_SUBSCRIBER_NO_LEN];
   public byte subRsv[20];
   public string subSrvType;
   public string subSrvId;
   public string subSndType;
   public string subSndIdx;
   public string subSndCode[RBT_TONE_ID_LEN];
   public string subSndValue[RBT_TONE_ID_LEN];
   public string subMsgId;
   public byte subBillFlag;
   public string subGroupOrder;
   public string subDate[9];
   public string subGroupName[31];
   public byte subSpFlag;
   public string subBillCode[21];
   public byte subReserve[30];
   public int bodyLength;
   public SKT_body_t bodyData[1]; 

   public SKT_Subheader_s()
   {
      //Constructor, Initialize your variables here
      //e.g.
      // sublength = 0;
      //etc...
   }
}

Java没有与结构类似的
struct
。您必须创建一个
来表示您的
结构
。一个好的方法是创建一个。您的
struct
元素成为私有字段,然后创建getter(和setter)方法来访问(修改)它们。您还应该为您的类创建一个合适的构造函数,具体取决于您希望如何初始化此类对象


关于基本数据类型的注意:我不能100%确定
U32
U8
S16
等在代码中表示什么,但您应该查看一下以确保能够正确映射它们。例如,请注意Java没有实现无符号整数(请参阅)。

Java没有与
struct
等价的东西。您必须创建一个
来表示您的
结构
。一个好的方法是创建一个。您的
struct
元素成为私有字段,然后创建getter(和setter)方法来访问(修改)它们。您还应该为您的类创建一个合适的构造函数,具体取决于您希望如何初始化此类对象



关于基本数据类型的注意:我不能100%确定
U32
U8
S16
等在代码中表示什么,但您应该查看一下以确保能够正确映射它们。例如,请注意Java不实现无符号整数(请参阅)。

您需要的是一个具有公共成员的Java类。

您需要的是一个具有公共成员的Java类。

也许您可以简单地使用
字节[]
数组来存储此结构化数据,然后使用
java.nio.ByteBuffer
来包装和操作它。

也许你可以简单地使用
byte[]
数组来存储这个结构化数据,然后使用
java.nio.ByteBuffer
来包装和操作它。

请阅读或查看文本区域右侧的“如何格式化”框,以了解如何正确格式化代码(只需将其缩进四个空格)。不需要任何HTML标记。你正在使用的数据类型是什么?你也会在Java上使用它们吗?@felix我尝试过创建一个类,但没有成功,如果你有任何建议,请给我。请编辑你的帖子,添加你尝试用于该类的代码以及可能出现的任何编译器错误。@Argots这就是我为什么要ave在这个论坛上发布了这个问题,不,我不知道这些数据类型在java中是否可行。如果这些数据类型在java中不可行,那么如何处理这个问题?请阅读或查看文本区域右侧的“如何格式化”框,以了解如何正确格式化代码(只需用四个空格缩进)。不需要任何HTML标记。你正在使用的数据类型是什么?你也会在Java上使用它们吗?@felix我尝试过创建一个类,但没有成功,如果你有任何建议,请给我。请编辑你的帖子,添加你尝试用于该类的代码以及可能出现的任何编译器错误。@Argots这就是我为什么要ave在这个论坛上发布了这个问题,不,我不知道这些数据类型在java中是否可能。如果这些数据类型在java中不可能,那么如何处理这个问题?对不起,在java中不可能有这种类型的数据类型java@Abhisek当使用不同的语言时,您有时需要选择该语言本机的等效类型y你可以用string替换S8、S16和S32;用short替换U8和U16,用unsigned int替换U32。这个网站将帮助你选择合适的类型。为什么你要用string替换S8、S16和S32?当然你会用byte、short和int替换它们?这可以编译吗?很抱歉,这种类型的数据类型在java@Abhisek使用时另一种语言您有时需要选择该语言固有的等效类型,您可以将S8、S16和S32替换为字符串;将U8和U16替换为short,将U32替换为unsigned int。此网站将帮助您选择合适的类型。为什么要将S8、S16和S32替换为string?当然,您会将它们替换为byte、short和int?是否编译?Eamonn发布的内容应该让您开始。但是,您需要决定将哪个本机Java数据类型用于
U32
U8
等等,正如MarcoS提到的。Eamonn发布的内容应该让您开始。但是,您需要决定将哪个本机Java数据类型用于
U32
U8
等等n正如MarcoS提到的。我想知道谁和为什么否决我的答案。如果我的答案不正确,请指出,我会纠正它,我感谢你的帮助。如果答案正确,请向上投票!我可以猜出为什么你会得到否决票。一旦你将
字节[]
使用
字节缓冲的数组
,您将有额外的开销。T