Java에서 .class는 무엇을 의미합니까?
.class
Java에서 무엇을 의미합니까? 예를 들어,이라는 클래스를 만든 경우 Print
. 무엇을 Print.class
반환합니까?
당신이 쓸 때 .class
- 클래스 이름 후에는 클래스 리터럴 참조하는 java.lang.Class
객체 정보 표현 에 대해 지정된 클래스를.
예를 들어, 클래스 인 경우 Print
, 다음 Print.class
클래스 나타내는 개체입니다 Print
런타임에 있습니다. 의 getClass()
(직접) 인스턴스의 메소드에 의해 리턴되는 동일한 오브젝트 입니다 Print
.
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
.class는 사용 가능한 클래스의 인스턴스가 없을 때 사용됩니다.
.getClass ()는 사용 가능한 클래스의 인스턴스가있을 때 사용됩니다.
object.getClass ()는 주어진 객체의 클래스를 반환합니다. 예를 들면 다음과 같습니다.
String string = "hello";
System.out.println(string.getClass().toString());
출력됩니다
class java.lang.String
이것은 문자열 객체의 클래스입니다 :)
객체의 인스턴스가 사용 가능한 경우 클래스를 얻는 가장 간단한 방법은 호출하는 것입니다. Object.getClass()
.class
구문
유형이 사용 가능하지만 인스턴스가없는 경우 .class
유형의 이름을 추가 하여 클래스를 얻을 수 있습니다. 이것은 또한 기본 유형에 대한 클래스를 얻는 가장 쉬운 방법입니다.
boolean b;
Class c = b.getClass(); // compile-time error
Class c = boolean.class; // correct
명확히하기 위해이 '.class'메소드는 Java 코드를 컴파일 한 후 표시되는 바이트 코드 파일이나 OOP 이론의 Class vs. Object 개념 사이의 혼란을 언급하지 않습니다.
이 '.class'메소드는 Java에서 코드 리플렉션에 사용됩니다. 일반적으로 정규화 된 클래스 이름, 상수 목록, 공용 필드 목록 등과 같은 클래스의 메타 데이터를 수집 할 수 있습니다.
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.html https://docs.oracle.com/javase/8/docs를 보려면 이 링크 (위에서 이미 언급 한)를 확인
하십시오. /api/java/lang/Class.html
일반적으로 프로젝트 빌드를 시작할 때 리플렉션을 즉시 사용할 계획이 없습니다. 이미 작동하는 코드를 관리하려고 시도한 후 필요한 사항입니다. 프로그램의 여러 인스턴스를 관리하려면 여러 번 필요합니다. 어쩌면 각 특정 '복제'를 식별하여 무언가가 이미 정의되어 있는지 확인하거나 함수 수를 계산하거나 단순히 클래스의 특정 인스턴스에 대한 세부 정보를 기록하려고 할 수 있습니다.
사용 가능한 인스턴스가없는 경우 .class
구문은 클래스의 해당 Class 객체를 가져 오는 데 사용됩니다. 그렇지 않으면 getClass () 메서드를 사용하여 Class 객체를 가져올 수 있습니다. 기본 데이터 유형의 인스턴스가 없으므로 기본 데이터 유형에 .class
구문 을 사용해야 합니다.
package test;
public class Test {
public static void main(String[] args)
{
//there is no instance available for class Test, so use Test.class
System.out.println("Test.class.getName() ::: " + Test.class.getName());
// Now create an instance of class Test use getClass()
Test testObj = new Test();
System.out.println("testObj.getClass().getName() ::: " + testObj.getClass().getName());
//For primitive type
System.out.println("boolean.class.getName() ::: " + boolean.class.getName());
System.out.println("int.class.getName() ::: " + int.class.getName());
System.out.println("char.class.getName() ::: " + char.class.getName());
System.out.println("long.class.getName() ::: " + long.class.getName());
}
}
여기서 핵심은 클래스와 객체의 차이점을 이해하는 것입니다. 객체는 클래스의 인스턴스입니다. 그러나 완전한 객체 지향 언어에서 Class는 Object 입니다. 따라서 호출 .class
은 해당 클래스의 클래스 객체에 대한 참조를 가져 와서 조작 할 수 있습니다.
A class literal is an expression consisting of the name of a class, interface, array, or primitive type, or the pseudo-type void, followed by a '.' and the token class. One of the changes in JDK 5.0 is that the class java.lang.Class is generic, java.lang.Class Class<T>
, therefore:
Class<Print> p = Print.class;
References here:
https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html
http://docs.oracle.com/javase/tutorial/extra/generics/literals.html
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.2
참고URL : https://stackoverflow.com/questions/15078935/what-does-class-mean-in-java
'Programming' 카테고리의 다른 글
C #에서 간단한 프록시를 만드는 방법은 무엇입니까? (0) | 2020.06.21 |
---|---|
datetime을 삽입하는 동안 문자열에서 날짜 및 / 또는 시간을 변환 할 때 변환에 실패했습니다 (0) | 2020.06.21 |
jQuery`click`,`bind`,`live`,`delegate`,`trigger` 및`on` 함수의 차이점은 무엇입니까? (0) | 2020.06.21 |
MVC vs n- 계층 아키텍처 (0) | 2020.06.21 |
Xcode는 현재 소프트웨어 업데이트 서버에서 사용할 수 없습니다 (0) | 2020.06.21 |