자바 반사 기본 개념

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 "";
    }

}

 
 
 

좋은 웹페이지 즐겨찾기