Java Java vs C# (열거형과 구조체, enum and struct) - 5부
페이지 정보
본문
안녕하세요. 소심비형입니다. 오늘은 열거형과 구조체에 대해서 알아볼께요.
열거형은 enum 키워드를 사용하여 정의합니다. Java는 특수한 형태의 클래스며, C#은 Built-in Type입니다. 이름과 값을 가지는 상수의 집합을 나타내며, C#의 경우에는 명시적으로 값을 할당하지 않으면 0부터 1씩 증가하며 자동으로 할당됩니다.
Java
package JavaType;
enum Animal
{
개,
고양이,
소,
말
};
enum Emotion
{
기쁨(10), 슬픔(20);
private final int value;
Emotion(int value)
{
this.value = value;
}
public int value()
{
return value;
}
};
public class EnumAndStruct
{
public static void main(String[] args)
{
Animal a = Animal.개;
if (a != Animal.말)
{
System.out.println(a);
}
Emotion e = Emotion.기쁨;
System.out.println(e.value());
}
}
아래는 결과를 찍어본 화면입니다.
C#은 기본 제공 타입이므로 Java보다는 구현이 쉽습니다.
C#
using System;
namespace ConsoleApplication1
{
enum Animal
{
개, 고양이, 소, 말
}
enum Emotion
{
기쁨 = 10, 슬픔 = 20
}
class Program
{
static void Main(string[] args)
{
Animal a = Animal.개;
if (a != Animal.소)
{
Console.WriteLine(a);
}
Emotion e = Emotion.기쁨;
Console.WriteLine((int)e);
Console.ReadLine();
}
}
}
이것도 결과는 "개, 10"이 출력됩니다.
-
Java는 1.5 이상부터 enum을 지원합니다.
-
C#은 3.0 이상부터 확장 메서드를 통해 enum type에 메서드를 정의할 수 있습니다.
열거형은 다른 상수와 마찬가지로, 컴파일 타임에 열거형의 개별 값에 대한 모든 참조는 숫자 리터럴로 변환됩니다. 엔터프라이즈급 개발 환경에서는 열거형 사용법에 대한 지침을 개발자들이 공유하고 있어야 합니다. 일반적으로 switch ~ case에서 enum을 많이 사용하죠? switch에서 비교할 때 상수의 변경에 대해 의도하지 않은 값과 비교될 수 있습니다. 예를 들어 Emotion에 "소심 = 10"을 추가하고 기쁨 = 20, 슬픔 = 30으로 변경했다면 다른 어떤 곳에서 문제를 발생시킬 수 있습니다. 이 문제를 피하기 위해서는 명명된 이름을 사용해야 합니다. 하지만, 10 보다 큰 경우(소심을 제외한 모두) 모두 통과해야 한다면 조심해서 사용해야겠죠?
구조체는 C#에만 있는 형식으로 자바와 비교할만한 내용이 없네요. 다만, Java는 클래스로 비슷하게 구현할 수 있죠. 구조체에 대해서 좀 더 자세하게 설명한 링크를 참조하세요.
Java 구조체: [ 클릭 ]
C# 구조체: [ 클릭 ]
다음 시간에...
- 이전글Java vs C# (연산자) - 6부 20.08.16
- 다음글7. Java의 구조체 (Struct) 20.08.16
댓글목록
등록된 댓글이 없습니다.