01. 서론
글을 작성하기 전까지 파이썬의 type() 함수와 유사한 기능을 하는 메소드를 자바로 구현하고자 했다.
그런데 코드를 작성하고 글쓰기를 누른 순간 자바는 정적 타입 언어라 변수의 데이터 타입이 컴파일 시점에서
결정되고 명시된다는 사실이 떠올랐다. 즉, 활용성 없는 코드를 작성한 것이다.
02. 코드
public class TypeReturn {
public static Class<Integer> typeof(final int expr){
return Integer.TYPE;
}
public static Class<Long> typeof(final long expr) {
return Long.TYPE;
}
public static Class<Float> typeof(final float expr) {
return Float.TYPE;
}
public static Class<Double> typeof(final double expr) {
return Double.TYPE;
}
public static Class<Character> typeof(final char expr){
return Character.TYPE;
}
}
모듈화까지 해두고 다른 코드를 작성할 때 쓰려고 했는데.... 역시 동시에 여러 언어를 공부하니 자주 헷갈린다.
이왕 코드를 분리한 김에 다른 자바 소스 파일에서 typeof 메소드를 사용하는 예제까지 업로드하겠다.
※ 위 코드 구현을 위해 참고한 블로그의 링크를 하기에 첨부하였습니다.
🚀 JAVA 변수의 타입 얻기 (typeof 구현)
자바 변수의 타입 얻기 만일 해당 변수의 타입을 비교하거나 변수의 타입 정보가 필요할 경우, 자바스크립트 진영에서는 typeof 연산자로 아주 간단하게 가져올 수 있다. 그러나 자바 진영에선 기
inpa.tistory.com
import mine.TypeReturn;
public class Test {
public static void main(String args[]){
System.out.println("TYPE : "+TypeReturn.typeof(3.14));
#출력 >>> TYPE : float
}
}
"mine"은 위 TypeReturn 클래스가 속한 패키지 이름이고, TypeReturn은 typeof 메소드가 속한 클래스 이름이다.
03. 몰랐던 개념 정리
"public static Class"와 같은 형식인데 왜 클래스가 아니라 메소드일까?
우선 클래스를 선언할 땐, 대문자 'C'가 아닌 소문자 'c'를 사용한다. 그리고 무엇보다 자바에선 public static class
같은 형태로 클래스를 선언할 수 없다. (public static void main과 헷갈렸었다.)
public과 class는 클래스 선언에 사용되는 키워드가 맞지만, static은 내부 클래스를 선언할 때만 쓸 수 있다.
그리고 클래스는 클래스 이름 뒤에 {}(중괄호)가 붙는다. typeof는 ()(괄호)와 매개변수의 형태가 있다.
그런데 메소드를 선언할 땐, 반환할 객체의 타입이 있어야 하는데 왜 보이지 않을까?(우선 난 몰랐음)
바로 이 "Class"가 반환할 객체 타입이였다. int나 void 등의 익숙한 타입이 아니라 처음엔 typeof가 클래스라고
생각했던 것이다. 다른 부분에 대한 설명도 하자면, "public static"은 메소드가 공개적으로 접근 가능하며,
클래스의 인스턴스 없이도 호출될 수 있음을 의미한다. "Class<Integer>" Class는 설명했으니 생략하고, <Integer>는
메소드가 Integer 타입에 해당하는 클래스 객체를 반환한다는 의미라고 한다.
마지막으로 매개변수 "final 데이터 타입 expr"은 매개변수가 메소드 내에서 변경될 수 없음을 의미한다.
※ 본 게시물은 신입 개발자가 실시간으로 공부를 하며 정리한 글이기에 다소 부정확한 표현 혹은 틀린 정보가 존재할 수도 있습니다. 잘못된 부분에 대한 피드백은 언제나 환영합니다.
'~2024.10' 카테고리의 다른 글
[c언어/개인 프로젝트] PC to PC 시리얼 통신 프로그램 (0) | 2024.02.25 |
---|---|
등비/등차 수열을 매개변수로 받아 다음 값 예측하기 (0) | 2024.02.24 |
윈도우에서 Hexa코드(16진수) 파일을 여는 방법 (0) | 2024.02.24 |
라우터와 공유기 뭐가 다른 걸까?(feat. 리피터 & AP) (0) | 2024.02.23 |
증감 연산자란? (전위/후위 증감 연산의 차이) (0) | 2024.02.22 |