.class
Java에서 무엇을 의미합니까? 예를 들어,이라는 클래스를 만든 경우 Print
. 무엇을 Print.class
반환합니까?
.class
와 우연히 관련된 구문 에 대해 묻습니다 .class
.
.class
Java에서 무엇을 의미합니까? 예를 들어,이라는 클래스를 만든 경우 Print
. 무엇을 Print.class
반환합니까?
.class
와 우연히 관련된 구문 에 대해 묻습니다 .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());
Writer.class.getDeclaredField("writeBuffer")
.
Print.class
무엇입니까?
new Intent(this, Activity.class
어떻게 처리 합니까? class Activity
각 수업을 비교 하여 알아 내려고 합니까?
.class
사용 가능한 클래스의 인스턴스가 없을 때 사용됩니다.
.getClass()
사용 가능한 클래스의 인스턴스가있을 때 사용됩니다.
object.getClass()
주어진 객체의 클래스를 반환합니다.
예를 들면 다음과 같습니다.
String string = "hello";
System.out.println(string.getClass().toString());
출력됩니다 :
class java.lang.String
이것은 문자열 객체의 클래스입니다 :)
getClass()
클래스의 객체를 가리키는 참조가있는 경우에만 유용합니다. ClassName.class
클래스에 인스턴스가없는 경우에도 사용할 수 있습니다. 예를 들어을 고려하십시오 Math.class
. 특정 상황에 적합합니다.
.class
와.getClass().
객체의 인스턴스가 사용 가능한 경우 클래스를 얻는 가장 간단한 방법은 호출하는 것입니다. 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());
}
}
클래스 리터럴은 클래스 이름, 인터페이스, 배열 또는 기본 유형 또는 의사 유형의 공백과 '.'로 구성되는 표현식입니다. 그리고 토큰 클래스. JDK 5.0의 변경 사항 중 하나는 java.lang.Class 클래스가 일반 java.lang.Class Class<T>
이므로 다음과 같습니다.
Class<Print> p = Print.class;
여기에 참조 :
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