Java 中的结构体

Siddharth Swami 2023年1月30日 2021年10月2日
  1. 使用类模拟 Java 中的结构体
  2. 使用 JUnion 插件模拟 Java 中的结构体
Java 中的结构体

在编程中,结构体是用于创建包含变量、方法、不同类型的构造函数、运算符等的结构的关键字。它类似于持有不同类型数据并具有值类型的类。它创建需要较少内存的对象。

但是,Java 中不存在结构体。我们可以修改 Java 中的一些对象,将它们用作结构体。

下面讨论这些方法。

使用类模拟 Java 中的结构体

我们可以将类中的所有方法设为 public 来模拟结构。结构体和类之间的主要区别在于结构体​​默认是公共的,而类是私有的。因此,如果我们创建一个类并将其方法和变量更改为 public,它将类似于结构体。

我们在下面的例子中实现了这个逻辑。

class EmployeeExample {
    private String emp_name;
    private int emp_code;

    // constructor
    public Employee(String emp_name, int emp_code) {
        this.emp_name = emp_name;
        this.emp_code = emp_code;
    }

    // getter
    public String getName() {
        return emp_name;
    }
    public int getCode() {
        return emp_code;
    }

    public static void main(String[] args){
        EmployeeExample[] array = new EmployeeExample[2];  // new stands for create an array object
        array[0] = new EmployeeExample("Ram", 1); // new stands for create an employee object
        array[1] = new EmployeeExample("Shyaam", 2);
        for(int i=0; i< array.length;i++){
            System.out.println(array[i].getName()+" "+ array[i].getCode());
        }
    }
}

输出 :

Ram 1
Shyaam 2

在上面的例子中,我们已经创建了构造函数和 getName()getCode() 方法为 public。然后,代码接受员工姓名和员工代码输入,并将值分别存储在 emp_nameemp_code 中的 EmployeeExample 类中。

使用 JUnion 插件模拟 Java 中的结构体

我们还可以使用 Project JUnion 插件。在这里,我们获得了帮助我们使用@Struct 注释创建结构体的软件。我们必须从站点 github.io/junion 安装插件并将其放在 maven 依赖项中。此外,我们必须添加 jar 文件名 junion.jar,可以从同一网站下载。

@Struct 注释包含帮助我们在 Java 中创建结构的方法。

下面的例子演示了上述方法。

import theleo.jstruct.Struct;
 
public class Struct {
 
    @Struct
    public static class Emp_Name {
        public String first_Name,middle_Name,last_Name;
    }
 
    public static void main(String[] args) {
         
        Emp_Name[] array = new Emp_Name[2];
        array[0].first_Name="Ram";
        array[0].middle_Name="";
        array[0].last_Name="Sharma ";
        System.out.println("Name : "+array[0].first_Name
                +" "+array[0].middle_Name
                +" "+array[0].last_Name);
    }
 
}

输出:

Name : Ram  Sharma

在这里,我们创建了一个静态公共类 Emp_Name,它充当一个结构体并由几个方法组成。然后在主类中,我们创建了一个长度为 2 的新数组,然后使用这些方法添加数据并将它们存储在数组中。