Java에서 객체 유형 가져 오기

Rupam Yadav 2023년10월12일
  1. Java에서getClass()를 사용하여 객체 유형 가져 오기
  2. Java에서instanceOf를 사용하여 객체 유형 가져 오기
  3. Java에서 수동으로 생성 된 클래스 개체의 유형 가져 오기
Java에서 객체 유형 가져 오기

이 기사에서는 Java에서 객체 유형을 얻는 방법을 배웁니다. 개체가 소스에서 가져온 경우 개체 유형을 확인하는 것이 유용합니다. API 또는 액세스 권한이없는 개인 클래스와 같이 객체 유형을 확인할 수없는 곳입니다.

Java에서getClass()를 사용하여 객체 유형 가져 오기

첫 번째 방법에서는IntegerString과 같은 래퍼 클래스의 Object 유형을 확인합니다. 유형을 확인하기 위해var1var2라는 두 개의 객체가 있습니다. Java에있는 모든 객체의 상위 클래스 인Object클래스의getClass()메소드를 사용합니다.

if조건을 사용하여 클래스를 확인합니다. 래퍼 클래스에는 유형을 반환하는 필드 클래스도 포함되어 있으므로var1var2와 일치하는 유형을 확인할 수 있습니다. 아래에서는 세 가지 유형의 두 개체를 모두 확인합니다.

public class ObjectType {
  public static void main(String[] args) {
    Object var1 = Integer.valueOf("15");
    Object var2 = String.valueOf(var1);

    if (var1.getClass() == Integer.class) {
      System.out.println("var1 is an Integer");
    } else if (var1.getClass() == String.class) {
      System.out.println("var1 is a String");
    } else if (var1.getClass() == Double.class) {
      System.out.println("var1 is a Double");
    }

    if (var2.getClass() == Integer.class) {
      System.out.println("var2 is an Integer");
    } else if (var2.getClass() == String.class) {
      System.out.println("var2 is a String");
    } else if (var2.getClass() == Double.class) {
      System.out.println("var2 is a Double");
    }
  }
}

출력:

var1 is an Integer
var2 is a String

Java에서instanceOf를 사용하여 객체 유형 가져 오기

Java에서 객체 유형을 가져 오는 또 다른 방법은instanceOf함수를 사용하는 것입니다. 객체의 인스턴스가 주어진 클래스와 일치하면 반환합니다. 이 예에서는Integer,StringDouble의 세 가지 유형으로 검사되는var1var2오브젝트가 있습니다. 조건 중 하나라도 충족되면 다른 코드를 실행할 수 있습니다.

var1Integer유형이므로var1 instanceOf Integer조건이 true가되고var2Double이므로var2 instanceOf Double이 true가됩니다.

public class ObjectType {
  public static void main(String[] args) {
    Object var1 = Integer.valueOf("15");
    Object var2 = Double.valueOf("10");

    if (var1 instanceof Integer) {
      System.out.println("var1 is an Integer");
    } else if (var1 instanceof String) {
      System.out.println("var1 is a String");
    } else if (var1 instanceof Double) {
      System.out.println("var1 is a Double");
    }

    if (var2 instanceof Integer) {
      System.out.println("var2 is an Integer");
    } else if (var2 instanceof String) {
      System.out.println("var2 is a String");
    } else if (var2 instanceof Double) {
      System.out.println("var2 is a Double");
    }
  }
}

출력:

var1 is an Integer
var2 is a Double

Java에서 수동으로 생성 된 클래스 개체의 유형 가져 오기

래퍼 클래스의 유형을 확인했지만이 예제에서는 수동으로 생성 된 세 가지 클래스의 세 개체 유형을 얻습니다. 세 가지 클래스 :ObjectType2,ObjectType3ObjectType4를 생성합니다.

ObjectType3ObjectType4를 상속하고ObjectType2ObjectType3을 상속합니다. 이제 우리는 이러한 모든 클래스의 객체 유형을 알고 싶습니다. 세 개의 객체,obj,obj2,obj3이 있습니다. 위의 예제에서 논의한getClass()instanceOf 메서드를 모두 사용합니다.

그러나obj2유형에는 차이가 있습니다. obj2변수는 클래스가ObjectType3인 동안ObjectType4유형을 리턴했습니다. 이는ObjectType3에서ObjectType4클래스를 상속하고instanceOf가 모든 클래스와 하위 클래스를 확인하기 때문에 발생합니다. getClass()함수는 직접 클래스 만 확인하므로objObjectType3을 반환했습니다.

public class ObjectType {
  public static void main(String[] args) {
    Object obj = new ObjectType2();
    Object obj2 = new ObjectType3();
    Object obj3 = new ObjectType4();

    if (obj.getClass() == ObjectType4.class) {
      System.out.println("obj is of type ObjectType4");
    } else if (obj.getClass() == ObjectType3.class) {
      System.out.println("obj is of type ObjectType3");
    } else if (obj.getClass() == ObjectType2.class) {
      System.out.println("obj is of type ObjectType2");
    }

    if (obj2 instanceof ObjectType4) {
      System.out.println("obj2 is an instance of ObjectType4");
    } else if (obj2 instanceof ObjectType3) {
      System.out.println("obj2 is an instance of ObjectType3");
    } else if (obj2 instanceof ObjectType2) {
      System.out.println("obj2 is an instance of ObjectType2");
    }

    if (obj3 instanceof ObjectType4) {
      System.out.println("obj3 is an instance of ObjectType4");
    } else if (obj3 instanceof ObjectType3) {
      System.out.println("obj3 is an instance of ObjectType3");
    } else if (obj3 instanceof ObjectType2) {
      System.out.println("obj3 is an instance of ObjectType2");
    }
  }
}

class ObjectType2 extends ObjectType3 {
  int getAValue3() {
    System.out.println(getAValue2());
    a = 300;
    return a;
  }
}

class ObjectType3 extends ObjectType4 {
  int getAValue2() {
    System.out.println(getAValue1());
    a = 200;
    return a;
  }
}

class ObjectType4 {
  int a = 50;

  int getAValue1() {
    a = 100;
    return a;
  }
}

출력:

obj is of type ObjectType2
obj2 is an instance of ObjectType4
obj3 is an instance of ObjectType4
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Object