Programing

Java의 변수 유형을 어떻게 아십니까?

c10106 2022. 4. 26. 13:08
반응형

Java의 변수 유형을 어떻게 아십니까?

내가 변수를 선언한다고 하자.

String a = "test";

그리고 어떤 유형인지, 즉 출력은 어떤 유형인지 알고 싶다.java.lang.String이거 어떻게 하지?

a.getClass().getName()

마틴의 대답을 확장하는 중...

마틴스 솔루션

a.getClass().getName()

확장 솔루션

어떤 것이든 작동하도록 하려면 다음과 같이 하십시오.

((Object) myVar).getClass().getName()
//OR
((Object) myInt).getClass().getSimpleName()

원시형일 경우 해당 Object 변종에서 포장(Autoboxed)한다.

예 #1 (정규)

private static String nameOf(Object o) {
    return o.getClass().getSimpleName();
}

예제 #2(세대)

public static <T> String nameOf(T o) {
    return o.getClass().getSimpleName();
}

추가 학습

그 이름을 원한다면 마틴의 방법을 써라.특정 클래스의 인스턴스인지 여부를 확인하려면:

boolean b = a instanceof String

검색엔진에서 배웠다(내 영어는 매우 서툴러, 그래서 코드...) 변수의 유형을 얻는 방법은?업스 :

String str = "test";
String type = str.getClass().getName();
value: type = java.lang.String

다음 방법:

str.getClass().getSimpleName();
value:String

지금 예:

Object o = 1;
o.getClass().getSimpleName();
value:Integer

Java의 연산자 오버로드 기능 사용

class Test {

    void printType(String x) {
        System.out.print("String");
    }

    void printType(int x) {     
        System.out.print("Int");
    }

    // same goes on with boolean,double,float,object ...

}

여기에 여러 가지 해결책이 있다고 생각한다.

  • 의 예가 해결책이 될 수 있다.

왜? Java에서 모든 클래스는 Object 클래스 자체에서 상속된다.따라서 변수가 있고 변수의 유형을 알고자 한다면사용할 수 있다

  • System.out.println(((Object)f).getClass().getName();

, 또는

  • 정수.class.isInstance(1985); //가 true를 나타냄

, 또는

  • isPrimitive()

    public static void main(String[] args) {
    
     ClassDemo classOne = new ClassDemo();
     Class classOneClass = classOne();
    
     int i = 5;
     Class iClass = int.class;
    
     // checking for primitive type
     boolean retval1 = classOneClass.isPrimitive();
     System.out.println("classOneClass is primitive type? = " + retval1);
    
     // checking for primitive type?
     boolean retval2 = iClass.isPrimitive();
     System.out.println("iClass is primitive type? = " + retval2);
    }
    

이를 통해 다음과 같은 이점을 얻을 수 있다.

  1. 거짓의
  2. 진실의

자세한 내용은 여기를 참조하십시오.원시 변수의 원시 유형을 어떻게 결정하는가?

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

http://docs.oracle.com/cd/E26806_01/wlp.1034/e14255/com/bea/p13n/expression/operator/Instanceof.html

나는 당신의 변수가 클래스 속성(그리고 클래스 필드를 검색하고 이름별로 올바른 필드를 얻어야만 하는 것이 아니라면)을 알 수 없는 (변수 타입!값 타입이 아닌!) 조아힘 사우어의 말에 동의한다.

사실 나한텐 그게 불가능해a.xxx().yyy()이 방법이라고 부르는 문맥에 따라 정확히 같은 물체에 대한 답이 달라지기 때문에 방법은 당신에게 정답을 준다...

티후에서 말했듯이, 만약 당신이 테스트할 타입의 정의된 리스트를 컴파일할 때 인스턴스(instance)를 사용할 수 있지만 당신은 또한 true를 반환하는 하위 클래스들을 얻을 것이다...

한 가지 가능한 해결책은 또한 다음의 시행으로부터 스스로에게 영감을 주는 것일 것이다.java.lang.reflect.Field그리고 당신만의 것을 창조한다.Field클래스를 선택한 다음 모든 로컬 변수를 이 관습으로 선언하십시오.Field구현...하지만 다른 방법을 찾아보는 게 좋을 거야. 왜 가치 유형뿐만 아니라 가변 유형이 필요한지 정말 궁금해.

참조URL: https://stackoverflow.com/questions/2674554/how-do-you-know-a-variable-type-in-java

반응형