2013-03-13 4 views
0

이것은 어리석은 질문 일 수 있습니다. 그러나 객체의 인스턴스를 메소드로 보내는 방법이 있는지 알아야합니까? 이처럼Java가 instanceof를 매개 변수로 보내십시오.

는 :

public class TestClass 
    { 
     public TestClass() 
     { 
      //Initialize 
     } 
    } 

    public class AnotherClass 
    { 
     Instance!? mInstance; 

     public AnotherClass(Instance!? instance) 
     { 
      mInstance = instance; 
     } 

     public boolean isInstanceOfTestClass() 
     { 
      return mInstance == TestClass; 
     } 
    } 

    public class Main 
    { 
     public static void main(String[] args) 
     { 
      AnotherClass a = new AnotherClass(TestClass); 

      if(a.isInstanceOfTestClass) 
       System.out.println("lala"); 
     } 
    } 

+0

저는 이것을 이해하는 데 어려움을 겪고 있습니다. 객체는 클래스의 인스턴스가 아닙니다. '인스턴스!'는 무엇을 의미합니까? – Nick

+1

클래스의'.class' 속성을 사용하고 싶습니까? 당신이하려고하는 것을 모른 채 말하기는 어렵습니다. – rm5248

답변

3

는 "개체 인스턴스"같은 것은 없다 (이 코드 블록으로 포장하기 위해 시도). 객체는 클래스의 인스턴스입니다. 따라서 "인스턴스"와 "객체"는 같은 것을 말합니다.

if (a instanceof AnotherClass) { 
    // ... 
} 

또한 객체의 클래스를 나타내는 클래스 java.lang.Class,있다 :

당신은 임의의 객체가 특정 클래스의 인스턴스 인 경우 테스트 할 instanceof 연산자를 사용할 수 있습니다. 당신은 객체에 getClass()를 호출하여 얻을 수 있습니다 :

Class<?> cls = a.getClass(); 

java.lang.Class의 API 문서를 참조하십시오.

+0

"Class"에서 원하는 특정 방법은 "isAssignableFrom"입니다.이 방법은 instanceof의 동적 버전입니다. –

+0

부모 클래스 Enemy와 하위 클래스 인 Zombie를 상속받은 경우. 그렇다면 어떻게 클래스 mEnemyClass를 수행하고 mEnemyClass = Zombie.class를 할당 할 수 있습니까? – Rasmus

+0

'Class mEnemyClass = Zombie.class; – Jesper

0

그럼 Class.isAssignableFrom을 사용하고 테스트 할 클래스가 T 인 클래스의 인스턴스로 구성 할 수 있습니다.

하지만 타이핑을 강요하고 유형이 아닌 클래스를 만드는 것에 대해 신경 쓰이는 경우 제네릭을 읽어 보시기 바랍니다.

관련 문제