12

我是 Java 新手,我正在尝试找到一种方法来存储信息,例如 C 中的结构。例如,我想让一个程序雇用员工。它将从用户那里获取名字、姓氏和身份证号码并将其存储起来。然后,用户可以根据条件查看该信息(例如,如果数据库有超过 1 名员工)。任何人都可以建议这样做的最佳方法吗?

4

4 回答 4

23

C 中的 struct 就像 Java 中的类一样,而且功能更强大,因为 Java 中的类可以包含方法,而 C++ 可以。您创建一个新类。例如 :

   class Employee {
       private String name;
       private int code;

   // constructor
   public Employee(String name, int code) {
      this.name = name;
      this.code = code;
   }

       // getter
       public String getName() { return name; }
       public int getCode() { return code; }
       // setter

       public void setName(String name) { this.name = name; }
       public void setCode(int code) { this.code = code; }
    }

当你想创建多个员工时,就像在 C 中一样创建数组:

Employee[] arr = new Employee[100];  // new stands for create an array object
arr[0] = new Employee("Peter", 100); // new stands for create an employee object
arr[1] = new Employee("Mary", 90);
于 2013-02-10T03:02:06.333 回答
2

我将创建一个带有公共字段和默认构造函数的公共类,如下所示:

    public class Employee {
       public String name, last_name;


   // constructor
   public Employee() {
      this.name = "";
      this.last_name= "";
   }


    }

  ....
  //when using it
  Employee e = new Employee();
  e.name ="Joe";
  e.last_name = "Doe";
于 2019-06-13T15:51:36.413 回答
2

在 Java 16 中有RecordsJDK 增强提案 395):

public record Employee(String firstName, String lastName, String id) {
}

这带有一个规范的构造函数、字段访问器hashCode()equals()实现toString()

于 2021-04-22T08:15:55.227 回答
0

我对 Java 不支持的结构有一个大问题。我正在编写一个 Android 应用程序,它通过蓝牙从基于嵌入式 ARM 的设备(用“C”编写)接收数据。接收到的数据是一个打包的字节数组,其中包含我的嵌入式设备的 EEPROM 的内容。

在“C”、C++ 或“C#”中,我可以简单地将这个字节流“转换”为表示嵌入式设备上 EEPROM 的结构,并通过引用它们以编程方式使用该结构的成员。在 Java 中,我没有这个选项,也没有好办法,因为 Java(除了支持打包类的晦涩的 IBM 版本)不允许您拥有“打包”类,其中类成员被打包每个班级成员的页眉和页脚。

于 2019-07-01T06:40:50.577 回答