HOWTO · Java

Java의 구조체

이 튜토리얼에서는 Java의 구조체에 대해 설명합니다.

이 페이지의 내용

프로그래밍에서 구조체는 변수, 메서드, 다양한 유형의 생성자, 연산자 등을 포함하는 구조를 생성하기 위한 키워드입니다. 다른 유형의 데이터를 보유하고 값 유형을 갖는 클래스와 유사합니다. 메모리를 덜 필요로 하는 객체를 생성합니다.

그러나 구조체는 Java에 존재하지 않습니다. Java에서 일부 객체를 수정하여 구조체로 사용할 수 있습니다.

이러한 방법은 아래에서 설명합니다.

클래스를 사용하여 Java에서 구조체 시뮬레이션

구조체를 시뮬레이션하기 위해 클래스의 모든 메서드를 공개할 수 있습니다. 구조체와 클래스의 주요 차이점은 구조체는 기본적으로 public이고 클래스는 private이라는 것입니다. 따라서 클래스를 만들고 해당 메서드와 변수를 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으로 생성했습니다. 그런 다음 코드는 직원 이름과 직원 코드 입력을 받아 EmployeeExample 클래스의 emp_name 및 emp_code에 값을 각각 저장합니다.

JUnion 플러그인을 사용하여 Java에서 구조체 시뮬레이션

Project JUnion 플러그인을 사용할 수도 있습니다. 여기에서 @Struct 주석을 사용하여 구조체를 생성하는 데 도움이 되는 소프트웨어를 얻습니다. github.io/junion 사이트에서 플러그인을 설치하고 maven 종속성에 배치해야 합니다. 또한 동일한 웹 사이트에서 다운로드할 수 있는 junion.jar이라는 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인 새 배열을 만든 다음 메서드를 사용하여 데이터를 추가하고 배열에 저장합니다.