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();
}
추가 학습
- Java 유형, 값 및 변수에 대한 자료: https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html
- 자동 보관 및 보관 해제: https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
- https://docs.oracle.com/en/java/javase/14/language/pattern-matching-instanceof-operator.html의 패턴 매칭에 대한 문서
그 이름을 원한다면 마틴의 방법을 써라.특정 클래스의 인스턴스인지 여부를 확인하려면:
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); }
이를 통해 다음과 같은 이점을 얻을 수 있다.
- 거짓의
- 진실의
자세한 내용은 여기를 참조하십시오.원시 변수의 원시 유형을 어떻게 결정하는가?
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
'Programing' 카테고리의 다른 글
__CURTOR__ 전 프로세서 매크로를 사용한 적이 있는 사람이 있는가? (0) | 2022.04.26 |
---|---|
Vue.js의 반응성은 어떻게 작용하는가? (0) | 2022.04.26 |
다른 구성 요소가 있는 Vue JS 루프 (0) | 2022.04.26 |
Java SafeVargs 주석, 표준 또는 모범 사례가 있는가? (0) | 2022.04.26 |
Vue v-model.lazy 또는 @change가 내 Vue 데이터를 업데이트하지 않음 (0) | 2022.04.26 |