java 기초 학습 노트의 반사
3673 단어 java 기초 학습 노트반사
반사: 클래스의 속성과 방법을 상응하는 클래스로 비추다.
반사 기본 사용
Class 클래스를 가져오는 세 가지 방법:
수조의 반사
다음 예제에서는 몇 가지를 설명합니다.
public class ReflectTest {
public static void main(String[] args) {
int [] a1 = new int[]{1,2,3};
int [] a2 = new int[5];
int [][] a3 = new int[2][3];
System.out.println(a1.getClass() == a2.getClass());//true
System.out.println(a1.getClass());//class [I
System.out.println(a3.getClass());//class [[I
System.out.println(a1.getClass().getSuperclass() == a3.getClass().getSuperclass());//true
System.out.println(a2.getClass().getSuperclass());//class java.lang.Object
// :Error:(15, 42) java: : java.lang.Class<capture#1, ? extends int[]> java.lang.Class<capture#2, ? extends int[][]>
//System.out.println(a1.getClass() == a3.getClass());
Object []b3 = a3;//
// Error:(17, 24) java: : int[] java.lang.Object[]
//Object [] b1 = a1;
String s1 = "abc";
System.out.println(Arrays.asList(a1));//[[I@1540e19d]
System.out.println(Arrays.asList(s1));//[abc]
}
}
출력:
true
class [I
class [[I
true
class java.lang.Object
[[I@1540e19d]
[abc]
난입:hashcode와 메모리 유출 문제 참고 자바api:프로필 로드
클래스 로더 읽기 전용 프로필 로드
유명class.getClassLoader().getResourceAsStream(str);
유명class.getResourceAsStream(str), 실질적으로는 클래스 로더를 호출합니다.원본 캡처(java.lang 패키지의 Class.java):
public InputStream getResourceAsStream(String name) {
name = resolveName(name);
ClassLoader cl = getClassLoader0();
if (cl==null) {
// A system class.
return ClassLoader.getSystemResourceAsStream(name);
}
return cl.getResourceAsStream(name);
}
경로str에 관해서는 쓰기에 좀 신경을 쓴다.Instropector & JavaBean
JavaBean이 속성 x의 값을 읽는 절차: 대문자 바꾸기, 접두사 고치기, 가져오기 방법.
"x"-->"X"-->"getX"-->"MethodGetX"
스스로 내성으로 조작하다
나는 현재 사용하지 않아서 코드를 붙이지 않고 핵심류만 붙인다
단순 구현:java를 사용합니다.beans.PropertyDescriptor 클래스
번거로움 실현:java를 사용합니다.beans.Introspector 클래스, getBeanInfo 방법의 반환값 반복
JavaBean에는 매개변수가 없는 구조 함수가 있어야 합니다.
BeanUtils 키트 사용
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 학습 노트(10)1: 형식 매개 변수와 반환 값의 문제(이해)(1) 형식 매개 변수: 클래스 이름: 이 클래스의 대상 추상적 클래스 이름이 필요합니다. 이 클래스의 하위 클래스 대상 인터페이스 이름이 필요합니다. 이 인터페이스의 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.