当前位置: 首页 > 面试题库 >

是否可以在Java中使用类似struct的结构?

柴兴贤
2023-03-14
问题内容

我正在考虑将Java用于大型项目,但是我找不到能够在Java中远程表示结构的任何东西。我需要能够将网络数据包转换为可在应用程序中使用的结构/类。

我知道这是可以使用RandomAccessFile,但这种方式是
接受的。因此,我很好奇是否可以像在C语言中那样将一组字节“广播”到一个结构中。如果这不可能,那么我将无法使用Java。

因此,我要问的问题是,是否有可能无需指定对齐方式和数据类型就将任何类型的对齐数据都转换为类?


问题答案:

您基本上是在问是否可以使用另一种语言的特定于C的解决方案来解决问题。答案是可以预见的,“不”。

但是,完全有可能构造一个类,该类在其构造函数中使用一组字节并构造一个适当的实例。

class Foo {

  int someField;
  String anotherField;

  public Foo(byte[] bytes) {
    someField = someFieldFromBytes(bytes);
    anotherField = anotherFieldFromBytes(bytes);
    etc.
 }
}

您可以确保类实例到字节数组的一对一映射。添加toBytes()方法以将实例序列化为字节。



 类似资料:
  • 问题内容: 我想知道是否存在可以在C#中使用的类似jQuery的CSS选择器。 目前,我正在使用正则表达式解析一些html字符串,并认为在jQuery中使用诸如css选择器之类的东西来匹配所需元素会更好。 问题答案: 您肯定应该看到@jamietre的CsQuery。看看他对这个问题的答案! Fizzler和Sharp-Query提供了类似的功能,但是这些项目似乎被放弃了。

  • 问题内容: 是否可以 不 尝试加载就知道是否已加载Java类?尝试加载该类,但我不希望出现这种副作用。还有另一种方法吗? (我不想覆盖类加载器。我正在寻找一个相对简单的方法。) 问题答案: (感谢Aleksi)此代码: 产生: 请注意,示例类不在软件包中。完整的二进制名称是必需的。 二进制名称的一个示例是

  • 问题内容: 是否可以在Gradle中声明一个可在Java中使用的变量?基本上,我想在build.gradle中声明一些var,然后在构建时(显然)获取它。就像C / C ++中的预处理器宏一样… 一个声明的例子就是这样: 有没有办法做这样的事情? 问题答案: 生成Java常量 你可以使用 产生Android资源 你可以使用或以通常的方式访问它们

  • 在可能的副本上: 此线程不是在询问如何扩展类。它问为什么一个声明为的类可能会扩展另一个类。 从该线程: <code>final</code>类只是一个不能扩展的类。 但是,我有一个帮助程序类,我声明它是,并了另一个类: Eclipse没有检测到任何错误。我已经测试了这个类,并且PDF是成功生成的,没有错误。 为什么我能够课程,而理论上我不应该延长? (如果重要的话,我正在使用Java7。)

  • 正如标题所示,这是关于在本机iOS应用程序的Appium中滚动。在Android应用程序中,我们使用: 这对我们的Android应用程序很有效,我想知道是否有类似的东西可以用于iOS。有可能使用这种方法吗? 我对此没有经验,也没有在留档中找到任何东西告诉我是否有方法使用此方法滚动到一个元素,并在传递给它的字符串中启用或传递它。它只是一种更快的方法来定位元素而不是XPath,还是可以用类似于Andr

  • 问题内容: 我正在阅读有关Java中已检查和未检查的异常的文章,并找到此文章/链接:https : //projectlombok.org/disableCheckedExceptions.html 根据这篇文章,这只是为javac开发的黑客。 考虑下面的代码片段: 在这里我不得不写, 因为我试图打开一个文件。在这里,“ throws”子句是必须的。没有它,我会得到一个错误。如果我确定要打开的文件