"안녕, 아미고!"
"이제 메인 이벤트 시간입니다. Class 클래스에 대해 알아보고 Reflection에 대해 알아 보겠습니다.
이미 알고 있듯이 Java의 모든 것은 객체입니다. 그리고 객체에 필요한 것은 무엇입니까? 각 객체는 무엇을 정의합니까? 그게 다 뭐야?"
"수업!"
"맞아! 잘했어. 각 개체에는 클래스가 있습니다. 하지만 다시 개체로 돌아가서... 어떤 개체는 엔터티를 완전히 포함하고 다른 개체는 단순히 개체를 관리하는 데 도움을 줍니다."
"이 후자 유형에는 FileOutputStream 및 Thread가 포함됩니다. Thread 객체를 생성할 때 새 스레드가 생성되지 않습니다. 스레드는 start() 메서드가 호출된 후 JVM(Java Virtual Machine)에 의해 생성됩니다. 이 객체는 단순히 프로세스를 관리하는 데 도움이 됩니다."
" FileOutputStream 과 동일합니다. 파일은 디스크에 저장되고 OS는 스토리지와 액세스를 관리합니다. 그러나 Java 가상 머신의 도움으로 File 객체를 통해 파일과 상호 작용할 수 있습니다."
"예, 이미 이해하고 있습니다."
"그래서 클래스와 상호 작용하기 위한 클래스라는 특수 클래스가 있습니다."
"추측하기 어렵지 않았습니다."
"예. JVM(Java Virtual Machine)이 새 클래스를 메모리에 로드할 때마다 로드된 클래스에 대한 특정 정보를 가져오는 데 사용할 수 있는 클래스 개체를 만듭니다."
"각 클래스와 개체는 « 클래스 개체 »와 연결됩니다."
예 | 설명 |
---|---|
|
Integer 클래스의 Class 개체를 가져옵니다. |
|
int 클래스의 Class 개체를 가져옵니다. |
|
String 개체의 Class 개체를 가져옵니다. |
|
Object 개체의 Class 개체를 가져옵니다. |
"와우! 정말 흥미롭군!"
" 클래스 라는 단어 는 Java의 키워드이며 변수 이름으로 사용할 수 없다는 것을 기억하십니까 ?"
"오 그래, 알아, 알아. 그냥 잊어버렸어."
"어딘가에서 이미 클래스 개체를 사용했습니까?"
"예, equals 메서드의 자체 구현을 작성할 때 사용했습니다."
"예, getClass() 메서드를 사용하여 객체가 동일한 클래스를 가지는지 테스트할 수 있습니다."
"그리고 이 물체로 무엇을 할 수 있습니까?"
"음, 많은 것들:"
자바 코드 | 설명 |
---|---|
|
클래스 이름을 가져옵니다. |
|
이름으로 클래스를 가져옵니다. |
|
개체의 클래스를 비교합니다. |
"흥미롭긴 한데 생각만큼 멋지진 않네."
"멋지고 싶습니까? Reflection 도 있습니다 . Reflection은 매우 멋집니다."
" 반사가 뭔데 ?"
" 리플렉션 은 클래스가 자신에 대한 정보를 얻을 수 있는 능력입니다. Java에는 클래스의 Class 클래스 와 유사한 특수 클래스인 Field 및 Method가 있습니다. Class 개체를 통해 클래스에 대한 정보를 얻을 수 있는 것처럼 Field 개체는 필드에 대한 정보를 제공합니다. , Method 개체는 메서드에 대한 정보를 제공합니다. 그리고 이를 사용하여 무엇을 할 수 있는지 살펴보십시오."
자바 코드 | 설명 |
---|---|
|
List 클래스의 인터페이스에 대한 Class 객체 목록을 가져옵니다. |
|
String 클래스의 상위 클래스의 Class 객체를 가져옵니다. |
|
List 클래스의 메서드 목록을 가져옵니다. |
|
새 문자열을 만듭니다. |
|
String 클래스의 길이 메서드를 가져오고 String s에서 호출합니다. |
"와우! 정말 멋져요!"
GO TO FULL VERSION