다크호스 프로그래머 - 자바 기초 지식 편 -> 반사
제1 부분
java 클래스: 한 가지 사물 의 공통성 을 묘사 하 는데 이런 사물 은 어떤 속성 이 있 고 속성 이 없 으 며 속성 이 무엇 인지 에 대해 서 는 이러한 인 스 턴 스 대상 이 있 습 니 다. 자바 프로그램의 각 자바 클래스 는 같은 종류의 사물 에 속 합 니 다. 이러한 사물 을 묘사 하 는 자바 클래스 는 Class 입 니 다. Person p1 = new Person();Person p2 = new Person();Class cls 1 = 바이트 코드 1;Class cls2 = Person.class;//바이트 코드 2Person 클래스 를 대표 하 는 바이트 코드, 예 를 들 어 현재 Person Date Math 세 가지 종 류 를 사용 하려 면 메모리 에 세 개의 바이트 코드 가 있 습 니 다. 모든 바이트 코드 는 하나의 Class 의 인 스 턴 스 대상 p1 대표 바이트 코드 를 통 해 만 든 대상 은 p1. getClass () 를 통 해 만 들 수 있 습 니 다.방법 은 대응 하 는 바이트 코드 Class. forName ("java. lang. String") 에서 String 의 바이트 코드 를 얻 습 니 다. - - - | - 그 역할 은 바이트 코드 를 되 돌려 주 는 것 입 니 다.방식 1: 로 딩 되 었 습 니 다. 직접 되 돌아 오 는 방식 2: 클래스 로 딩 기 를 사용 하여 바이트 코드 를 불 러 오 는 세 가지 방식 입 니 다. 1. 클래스 이름. class 예 를 들 어 System. class 2. 대상. getclass () 예 를 들 어 new Date (). getClass () 3. Class. forName ("클래스 이름"), 예 를 들 어 Class. forName ("java. lang. String") Class 류 의 인 스 턴 스 대상 은 메모리 에 있 는 바이트 코드 에 대응 하여 메모리 에 불 러 오고 저장 공간 을 차지 합 니 다. 이 공간 안의 내용 은 바이트 코드 가 다른 바이트 코드 가 다 르 기 때문에 메모리 에 있 는 내용 이 다 릅 니 다.이 공간 은 각각 하나의 대상 으로 이 대상 들 이 같은 유형 을 가지 고 있다 는 것 을 나 타 낼 수 있다.
제2 부분
public static void main (String [] args) throws Exception {/string 은 클래스 입 니 다. 기본 형식 이 아 닌 String str 1 = "abc";/str 1 은 문자열 대상 입 니 다. 대상. getClass () 는 String 의 바이트 코드 Class cls 1 = str1. getClass (), Class cls 2 = String. class, Class cls 3 = Class. forName ("java. lang. String"), System. out. println (cls 1 = = cls 2),/true System. out. println (cls 3 = = cls 2) 을 얻 었 습 니 다.;/true//기본 형식 바이트 코드 false: String 은 클래스 이기 때문에 기본 데이터 형식 System. out. println (cls1. isPrimitive ()), System. out. println (int. class. isPrimitive ()),/true/false 는 int 와 Integer 가 각각 각 바이트 코드 System. out. println (int. class = = Integer. class),//TYPE 는 포장 형식 으로 포 장 된 (기본 데이터 형식) 을 대표 합 니 다.Integer 형식의 바이트 코드 System. out. println (int. class = = Integer. TYPE);/true//모든 종 류 는 메모리 에 하나의 바이트 코드 이 며, 모든 종 류 는 class 로 System. out. println (int []. class. isPrimitive ();//false System. out. println (int []. class. isArray ();//true/배열 형식의 Class 인 스 턴 스 대상 Class. isArray (); 배열 형식 입 니까?//아무튼 원본 프로그램 에 나타 나 는 유형 만 있 으 면 각각 Class 인 스 턴 스 대상 이 있 습 니 다. 예 를 들 어 int [], void}
제3 부분
//반 사 는 자바 류 의 여러 성분 을 해당 하 는 자바 류 로 비 추 는 것 입 니 다./constructor 류: 특정한 유형의 구조 방법 을 얻 는 Public class FanShe {public static void main (String [] args) throws Exception {//특정한 유형의 모든 구조 방법 을 얻 는 Constructor [] constructors = Class. forName ("java. lang. String"). getConstructors ();//String 클래스 의 String (StringBuffer buffer) 을 얻 는 구조 방법의 구조 방법 Constructor constructor =/이 반 문장 코드 는 컴 파일 할 때 실 행 됩 니 다. 구조 방법 만 알 고 있 습 니 다. 만 든 대상 이 무엇 인지//후반 문장 코드 가 실 행 될 때 만 String 형식 임 을 알 수 있 습 니 다. 실 행 될 때 만 후반 문장 결 과 를 constructor Class. forName ("java. lang. String"). getConstructor (StringBuffer. class) 에 게 보 냅 니 다.;//인 스 턴 스 대상 을 만 듭 니 다. - - - 구조 방법 을 선택 하 는 것 을 표시 합 니 다./일반적인 방식 String str = new String (new String Buffer ("abc");/반사 방식 즉, 인 스 턴 스 대상 String str 1 = (String) constructor. new Instance (new StringBuffer ("abc") 를 구성 하 는 것 입 니 다.;//컴 파일 할 때 틀 렸 습 니 다. 실행 이 틀 렸 습 니 다. constructor 는 수신//stringBuffer 형식 에 대응 하기 때 문 입 니 다. StringSystem. out. println (str1. charAt (2) 을 전 달 했 습 니 다.}}
제4 부분
//멤버 방법의 반사 Method public class FanShe {public static void main (String [] args) throws Exception {String str = "abcd";되 돌아 오 는 met 는 대상 을 표시 하 는 방법 입 니 다. 이 방법 으로 문자열 str 와 각 표 1 에 작용 합 니 다. "charAt"은 방법의 이름 입 니 다. int. class 는 각 표 가 숫자 이기 때문에 int. class 의 바이트 코드 를 사용 합 니 다. invoke 는 Method 방법 대상 의 방법 입 니 다 */method met = String. class. getMethod ("charat", int. class);/* Method 대상 에 게 전달 되 는 invoke ()방법의 첫 번 째 매개 변 수 는 null 입 니 다. 이 Method 대상 에 대응 하 는 정적 방법 입 니 다. met 호출 은 대상 str 를 통 해 이 루어 집 니 다. (null, 1) 대상 을 통과 하지 않 고 호출 되 었 다 면 대상 을 사용 하지 않 고 호출 할 수 있 는 방법 은 정적 방법 입 니 다. */System. out. println (met. invoke (str, 1);/bSystem. out. println (met. invoke (str, new Object [] {3});/d}}
제5 부분
예제: 사용자 가 제공 하 는 클래스 이름 에 따라 프로그램 을 작성 하여 이 클래스 의 main 방법 을 실행 할 수 있 습 니 다.
class method {
public static void main(String[] args) throws Exception {
/* 动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象时需要用到:
String str = “用户输入的字符串” ;
Class t = Class.forName(str);*/
String start = args[0];
Method mainMethod = Class.forName(start).getMethod("main",
String[].class);
mainMethod.invoke(null, (Object) new String[] { "111", "222", "333" });
// mainMethod.invoke(null, new Object[] {new String[] { "111", "222", "333" }});
}
}
public class FanShe6 {
public static void main(String[] args) {
for (String arg : args) {
System.out.println(arg);
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.