개요
이 예제는 안드로이드에서 사용자 정의(커스텀) 객체를 직렬화(Serializable) 가능하게 만드는 방법을 단계별로 설명합니다. 직렬화를 적용하면 객체를 Intent나 Bundle에 담아 액티비티 간에 전달하거나, 파일·네트워크를 통해 저장하고 전송할 수 있습니다.
1단계 — 새 프로젝트 만들기
Android Studio에서 File ⇒ New Project를 선택한 후, 필요한 항목을 모두 입력하여 새 프로젝트를 생성합니다.
2단계 — 레이아웃 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:gravity = "center"
android:layout_height = "match_parent"
tools:context = ".MainActivity"
android:orientation = "vertical">
<Button
android:id = "@+id/parcleObject"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_alignParentTop = "true"
android:layout_centerHorizontal = "true"
android:layout_marginTop = "27dp"
android:text = "Click here"/>
</LinearLayout>위 코드에서는 직렬화된 객체의 값을 화면에 보여주기 위해 버튼 뷰 하나를 배치했습니다.
3단계 — MainActivity 구현
src/MainActivity.java 파일에 다음 코드를 추가합니다.
package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
serializableObject sample;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.parcleObject).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sample = new serializableObject("sairamkrishna Mammahe");
Toast.makeText(MainActivity.this,sample.getName(),Toast.LENGTH_LONG).show();
}
});
}
}버튼을 클릭하면 serializableObject 인스턴스를 생성하고, Toast를 통해 객체에 저장된 이름 값을 화면에 출력합니다.
4단계 — 직렬화 클래스 작성
src/serializableObject.java 파일을 새로 만들고 다음 코드를 추가합니다.
package com.example.myapplication;
import java.io.Serializable;
class serializableObject implements Serializable {
String name;
public serializableObject(String name) {
this.name = name;
}
public String getName() {
return name;
}
}여기서 핵심은 implements Serializable 한 줄입니다. java.io.Serializable 인터페이스를 구현하기만 하면 별도의 메서드를 작성하지 않고도 해당 클래스의 객체가 직렬화 대상이 됩니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하고, 목록에서 자신의 모바일 기기를 선택하세요. 그러면 기기에 아래와 같은 기본 화면이 표시됩니다.

버튼을 클릭하면 아래와 같이 결과가 나타납니다.

마무리
커스텀 클래스에 Serializable 인터페이스만 구현하면 객체를 손쉽게 직렬화할 수 있습니다. 참고로 성능이 중요한 상황에서는 Parcelable 사용이 권장되며, 간단한 데이터 전달이나 로컬 저장에는 Serializable이 충분히 유용합니다.