sourcecode

.class는 Java에서 무엇을 의미합니까?

copyscript 2022. 7. 26. 23:31
반응형

.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

반응형