.class는 Java에서 무엇을 의미합니까?
무인 does does 가 뭐죠?.class
를 들어, 제가 때, '반'을 만들었을 때, '반'은 '반'을 만들었을 때,Print
.무엇인가.Print.class
반하?????
쓸 때.class
클래스 이름 뒤에는 지정된 클래스에 대한 정보를 나타내는 클래스 리터럴(class reteral을 참조합니다.
를 들어, 클래스가 「」인 는, 「」입니다.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
이것은 문자열 객체의 클래스입니다. : )
이 '.class' 메서드는 Java 코드 컴파일 후에 표시되는 바이트 코드 파일이나 Class와 Class의 개념 간의 혼동이 아닙니다.OOP 이론의 객체.
이 .class 메서드는 Java에서 코드 리플렉션에 사용됩니다.일반적으로 정규화된 클래스 이름, 상수 목록, 공용 필드 목록 등 클래스에 대한 메타 데이터를 수집할 수 있습니다.
자세한 내용은 위의 링크(이미 언급)를 참조해 주세요.
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.htmlhttpsdocs.oracle.com/javase/tutorial/reflect/class/.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.htmlhttpsdocs..com/javase/8/docs/api/java/lang/Class.html
일반적으로 프로젝트 구축을 시작할 때 Reflection을 바로 사용할 계획이 없습니다.이미 동작하고 있는 코드를 관리하려고 하면, 필요한 것을 알 수 있습니다.프로그램의 여러 인스턴스를 관리하기 위해 필요한 경우가 많습니다.각 특정 '클론'을 식별하여 이미 정의된 항목이 있는지 확인하거나 함수 수를 세거나 클래스의 특정 인스턴스에 대한 세부 정보를 간단히 기록할 수 있습니다.
수 있는 경우 방법은 " "를 호출하는 입니다.Object.getClass()
.class
문문
할 수 , "를 "클래스"를 할 수 ..class
유형 이름으로 이동합니다.이것은 또한 원시 유형에 대한 클래스를 얻는 가장 쉬운 방법입니다.
boolean b;
Class c = b.getClass(); // compile-time error
Class c = boolean.class; // correct
클래스에 대해서는, docs.oracle.com 를 참조해 주세요.
사용 가능한 인스턴스가 없는 경우.class
구문을 사용하여 클래스에 대응하는 클래스 개체를 가져옵니다.그렇지 않으면 getClass() 메서드를 사용하여 클래스 개체를 가져올 수 있습니다.원시 데이터 유형의 인스턴스가 없기 때문에, 우리는 다음을 사용해야 합니다..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
는 해당 클래스의 Class 객체에 대한 참조를 가져옵니다.이 오브젝트는 조작할 수 있습니다.
위의 답변에 추가:
"myPackage"라는 이름의 클래스가 있다고 가정합니다.마이클래스」.가 클래스 패스에 있다고 가정하면 다음 문장은 동일합니다.
//checking class name using string comparison, only Runtime check possible
if(myInstance.getClass().getName().equals(Class.forName("myPackage.MyClass")).getName()){}
//checking actual Class object for equality, only Runtime check possible
if(myInstance.getClass().getName() == Class.forName("myPackage.MyClass"))){}
//checking actual Class object for equality, but compile time validation
//will ensure MyClass is in classpath. Hence this approach is better (according to fail-fast paradigm)
if(myInstance.getClass() == MyClass.class){}
마찬가지로 다음 항목도 동일합니다.
Class<?> myClassObject = MyClass.class; //compile time check
Class<?> myClassObject = Class.forname("myPackage.MyClass"); //only runtime check
JVM이 유형을 로드하면 해당 유형을 나타내는 클래스 개체가 JVM에 존재합니다. 리플렉션 패키지에서 많이 사용되는 해당 클래스 개체에서 해당 유형에 대한 메타데이터를 가져올 수 있습니다.MyClass.class는 MyClass를 나타내는 Class 객체를 가리키는 단축 메서드입니다.
부록으로서 클래스에 관한 정보<?> 레퍼런스는 대부분의 경우 함께 사용되기 때문에 이 레퍼런스와 함께 읽으면 편리합니다.
클래스 <?> 참조 타입에는, 임의의 타입을 나타내는 임의의 클래스 오브젝트를 격납할 수 있습니다.
이 동작은 클래스 <<?>에서도 같은 방법으로 동작합니다.> 참조는 메서드 인수에도 있습니다.
클래스 "Class"에는 공용 생성자가 없습니다.따라서 "new" 연산자를 사용하여 "Class" 인스턴스를 인스턴스화할 수 없습니다.
클래스 리터럴은 클래스 이름, 인터페이스, 배열 또는 원시 유형 또는 유사 유형 보이드 뒤에 '.'와 토큰 클래스가 이어지는 식입니다.JDK 5.0에서는 클래스 java.lang이 변경되었습니다.클래스는 범용입니다.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
언급URL : https://stackoverflow.com/questions/15078935/what-does-class-mean-in-java
'sourcecode' 카테고리의 다른 글
'EVP_Decrypt'를 해결하는 방법FInal_ex: 파일 복호화 중 잘못된 복호화" (0) | 2022.07.26 |
---|---|
( this . internalValue || [ ] ).findIndex는 v-select에서 여러 항목을 선택할 때 사용할 수 없음 (0) | 2022.07.26 |
출력에서 동일한 길이를 얻기 위해 printf()를 사용하여 문자열을 포맷하는 방법 (0) | 2022.07.26 |
메서드에 대한 양식 제출을 연기하시겠습니까? (0) | 2022.07.26 |
error C2275 : illegal use of this type as an expression (0) | 2022.07.26 |