본문 바로가기
Everyday Study

2024.09.06(금) { no arg = 디폴트, 마샬링 언마샬링 }

by xogns93 2024. 9. 6.

no arg = 디폴트

 

자바에서 "no-arg"는 기본 생성자(default constructor)를 의미합니다. 즉, 매개변수가 없는 생성자를 말합니다. 일반적으로 자바 클래스는 명시적으로 생성자를 작성하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어줍니다.

 

no-arg 생성자

명시적으로 매개변수를 받지 않는 생성자를 직접 작성하는 것을 의미합니다. 이 경우, 개발자가 기본 생성자에 특정 동작을 추가하거나 객체의 초기 상태를 설정할 수 있습니다.

public class MyClass {
    // 명시적인 no-arg 생성자
    public MyClass() {
        System.out.println("MyClass의 기본 생성자가 호출되었습니다.");
    }
}

 

"no-arg" 생성자는 디폴트 생성자와 동일한 개념으로, 매개변수가 없는 생성자를 의미합니다.

 


"마샬링(Marshalling)"과  "언마샬링(Unmarshalling)"

 

 

"마샬링(Marshalling)"과 "언마샬링(Unmarshalling)"은 객체를 변환하거나 전송 가능한 형식으로 변환하는 과정을 의미합니다. 자바에서는 주로 객체를 JSON, XML과 같은 형식으로 변환하는 데 사용되며, 이와 반대로 데이터를 다시 객체로 변환하는 과정도 포함됩니다.

마샬링(Marshalling)과 언마샬링(Unmarshalling) 개념

  • 마샬링(Marshalling): 자바 객체를 JSON과 같은 형식으로 변환하는 과정입니다.
  • 언마샬링(Unmarshalling): JSON 데이터를 자바 객체로 변환하는 과정입니다.

자바에서는 주로 Jackson이나 Gson 같은 라이브러리를 사용하여 객체를 JSON으로 변환(마샬링)하고, JSON을 객체로 변환(언마샬링)할 수 있습니다.

Jackson을 사용한 예시

먼저 Jackson 라이브러리를 사용하여 자바 객체를 JSON으로 변환(마샬링)하고, 다시 JSON을 자바 객체로 변환(언마샬링)하는 예를 보여드리겠습니다.

1. 자바 객체를 JSON으로 변환 (마샬링)

import com.fasterxml.jackson.databind.ObjectMapper;

public class MarshallingExample {

    public static void main(String[] args) {
        try {
            // 객체 생성
            Person person = new Person("John", 30);

            // ObjectMapper 인스턴스 생성
            ObjectMapper objectMapper = new ObjectMapper();

            // 객체를 JSON으로 변환 (마샬링)
            String jsonString = objectMapper.writeValueAsString(person);

            System.out.println("마샬링된 JSON: " + jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
// Person 클래스
public class Person {
    private String name;
    private int age;

    // 기본 생성자 (no-arg constructor)
    public Person() {
    }

    // 매개변수가 있는 생성자
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter와 Setter
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 

 

출력:

마샬링된 JSON: {"name":"John","age":30}

 

 

2. JSON을 자바 객체로 변환 (언마샬링)

import com.fasterxml.jackson.databind.ObjectMapper;

public class UnmarshallingExample {

    public static void main(String[] args) {
        try {
            // JSON 문자열
            String jsonString = "{\"name\":\"John\",\"age\":30}";

            // ObjectMapper 인스턴스 생성
            ObjectMapper objectMapper = new ObjectMapper();

            // JSON을 객체로 변환 (언마샬링)
            Person person = objectMapper.readValue(jsonString, Person.class);

            System.out.println("언마샬링된 객체: " + person.getName() + ", " + person.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

 

출력:

언마샬링된 객체: John, 30