자바 반사 기본 개념
4018 단어 자바 반사
1. 자바 반사 입구
자바 프로그램 에 서 는 모든 대상 에 대응 하 는 Class 가 있 으 며, Class 는 자바 로 반사 되 는 대문 입 니 다.
자바 에서 Class 를 얻 는 방법 은 세 가지 가 있 습 니 다. 1. 대상 의 getClass () 방법 을 통 해.2. 클래스 의. class 속성 을 통 해;3. 클 라 스 를 통과 하 는 방법
public static Class> forName(String className)2
/*
* Copyright 2016 https://github.com/sdcuike Inc.
* All rights reserved.
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.doctor.reflect;
import java.util.Vector;
/**
* @author sdcuike
*
* Created At 2016年8月28日 下午2:55:57
*
* 在java中获取Class有两种方式
*/
public class HowGetClass {
/**
* 在java中获取Class有两种方式
*
* @param args
*/
public static void main(String[] args) {
// 1.
@SuppressWarnings("rawtypes")
Class vectorClass = Vector.class;
System.out.println(vectorClass);// class java.util.Vector
System.out.println(vectorClass.getName());// java.util.Vector
System.out.println(vectorClass.getSimpleName());// Vector
System.out.println(vectorClass.getCanonicalName());// java.util.Vector
// 2.
Vector<Object> vector = new Vector<>();
@SuppressWarnings("rawtypes")
Class<? extends Vector> vectorClass2 = vector.getClass();
System.out.println(vectorClass2);// class java.util.Vector
}
}
2. Class 류 의 인 스 턴 스 는 몇 가지 유형 이 있 습 니 다.
Instances of the class Class represent classes and interfaces in a running Java application. An enum is a kind of class and an annotation is a kind of interface. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.
Class has no public constructor. Instead Class objects are constructed automatically by the Java Virtual Machine as classes are loaded and by calls to the defineClass method in the class loader.
위 는 jdk 문서 에서 기원 되 었 습 니 다.
Class 클래스 의 인 스 턴 스 는 자바 응용 에서 jdk 자체 테이프 와 사용자 정의 클래스 의 인 스 턴 스 와 인 터 페 이 스 를 나타 낸다.매 거 는 특별한 종류 (역 컴 파일 후 매 거 는 자바 의 문법 당 효과 임 을 알 수 있 음) 이 며, 주 해 는 사실 특수 한 인터페이스 이기 도 하 다.자바 의 원생 유형 및 배열, void 키 워드 는 모두 Class 류 의 인 스 턴 스 입 니 다.
Class 류 는 구조 함수 가 없 으 며, 그 실례 화 는 주로 자바 가상 컴퓨터 가 책임 집 니 다.
/**
* @author sdcuike
*
* Created At 2016年8月28日 下午4:03:21
*/
public class ClassTypeRepresentation {
public static void main(String[] args) {
System.out.println(int.class.isPrimitive());// true
System.out.println(Collection.class.isInterface());// true
System.out.println(Object[].class.isArray());// true
System.out.println(int[].class.getComponentType());// int
System.out.println(DemoInterface.class.isInterface());// true
System.out.println(DemoInterface.class.isAnnotation());// true
System.out.println(void.class.isPrimitive());// true
}
public static @interface DemoInterface {
String value() default "";
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 리 플 렉 션 관련 및 예시자바 리 플 렉 션 과 관련 된 것 은 네 개의 final 유형의 클래스 클래스 클래스, Method, Field, Constructor 이다.자바 의 모든 종류의 부모 클래스 Object 입 니 다.그 중에서 Cl...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.