`
kuchawyz
  • 浏览: 466 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java Field 反射

阅读更多
ava 反射field 测试
tank类
Java代码  收藏代码

    package ReflectJava; 
     
    public class Tank { 
         
        private  int x = 4; 
        public  int y = 5; 
         
        public Tank(int x, int y) { 
            super(); 
            this.x = x; 
            this.y = y; 
        } 
         
         
        public int getX() { 
            return x; 
        } 
     
     
        public void setX(int x) { 
            this.x = x; 
        } 
     
     
        public int getY() { 
            return y; 
        } 
     
     
        public void setY(int y) { 
            this.y = y; 
        } 
     
     
        public Tank(){ 
             
        } 
        public int add(){ 
             
            return 4; 
             
        } 
        private void bdd(){ 
             
            System.out.println("私有方法步能访问哦 亲!!"); 
             
        } 
        private  void cdd(int x,int y){ 
             
            System.out.println(" 亲!!"); 
             
        } 
     
    } 


-----------------------tank父类-----------------------------------
Java代码  收藏代码

    package ReflectJava; 
     
    public class SuperTank { 
     
        private int z = 0; 
        public int x = 3; 
         
         
        public SuperTank() { 
            super(); 
            // TODO Auto-generated constructor stub 
        } 
     
     
        public SuperTank(int z, int x) { 
            super(); 
            this.z = z; 
            this.x = x; 
        } 
         


///------------------测试类----------------------------------------
Java代码  收藏代码

    package ReflectJava; 
     
    import java.lang.reflect.Field; 
     
    public class Test1 { 
     
        public static void main(String[] args) throws InstantiationException, IllegalAccessException, SecurityException, NoSuchFieldException { 
            Class t = Tank.class; 
            Tank t1 = new Tank(); 
             
             
            Field f = t.getDeclaredField("x"); //得到单一属性方法(公有,私有,保护的都可以) 
            System.out.println("getDeclaredField 得到的属性----"+f); 
             
            Field fk = t.getField("y"); //得到单一属性方法(只能为公有的) 
            System.out.println("getField得到的属性-----"+fk); 
             
             
            Field[] fs = t.getDeclaredFields();// 得到该类所有声明的属性(公有,保护,私有都可以) 
             
            System.out.println("------GET DeclareFields方法得到的属性值------"); 
            for(Field ff: fs) 
            { 
                 
                System.out.println(ff); 
            } 
             
            System.out.println("------GET fields()--方法得到的属性值------"); 
             
            Field[] fss = t.getFields(); // 得到该类的所有属性包括其父类的属性(但只能是公有的) 
            for(Field ff1: fss) 
            { 
              
                System.out.println(ff1); 
                 
            } 
         
             
        fk.set(t1, 6); // 调用field 的set方法可以往里面设值 而不需要new 该对象去set值了  
         
        System.out.println("通过fk.set(t1, 6)方法后,tank 属性由3变成  "+t1.getY()); 
         
             
             
        } 
     
    } 
    ------------------------------测试结果------------------------------- 
    [code="text/code] 
    getDeclaredField 得到的属性----protected int ReflectJava.Tank.x 
    getField得到的属性-----public int ReflectJava.Tank.y 
    ------GET DeclareFields方法得到的属性值------ 
    protected int ReflectJava.Tank.x 
    public int ReflectJava.Tank.y 
    ------GET fields()--方法得到的属性值------ 
    public int ReflectJava.Tank.y 
    public int ReflectJava.SuperTank.z 
    public int ReflectJava.SuperTank.x 
    通过fk.set(t1, 6)方法后,tank 属性由3变成  6 



通过测试总结:
getFiled: 访问公有的属性

getDeclaredField:所有已声明的属性。但得不到其父类的属性

getFilds:访问所有的属性只能为公有的,注意当子类的属性和父类的属性相同时,如果都为 int x;则子类的Class对象.fields(x) 会访问子类的属性x,如果子类的属性是私有地,或者是保护类型的,则就会去访问父类的x属性了。

getDeclaredFieldgetDeclaredFields:得到该类所有已声明的属性

简单2句:field 只能访问公有的。
      DeclaredField 访问所有权限的。
分享到:
评论

相关推荐

    java反射组件——Field

    ### Java反射机制之Field组件详解 #### 一、引言 在Java开发中,反射机制是一种非常强大的工具,它能够让我们在运行时获取类的信息并操纵对象的状态。Field作为Java反射机制的重要组成部分之一,主要用于获取类中...

    java反射 java反射 java反射java反射

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...

    java反射,获取所有属性、方法以及List集合类

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建对象、获取类...

    java面试题--反射机制

    ### Java反射机制详解 #### 一、引言 在Java面试中,经常会出现与反射机制相关的题目。这是因为Java反射机制不仅是Java语言的一项重要特性,也是理解Java动态特性的关键所在。通过本文,我们将深入探讨Java反射...

    java例子 java反射

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是`java.lang.Class`,它代表了类的信息。当我们需要在运行时动态地...

    Java 1.5 反射机制

    Java 1.5引入的反射机制是其动态性的一个重要体现,它允许程序在运行时检查和操作类、接口、对象及其方法。反射为开发者提供了强大的能力,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及处理...

    java反射获取所有属性,获取所有get方法,包括子类父类

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建动态代理等。...

    java中反射的概念

    在Java中,反射主要通过`java.lang.reflect`包中的类来实现,如`Class`, `Method`, `Constructor`和`Field`等。这些类提供了访问和操作类信息的接口。例如,`Class.forName()`方法用于在运行时加载指定名称的类;`...

    Java反射性能测试分析

    ### Java反射性能测试分析 #### 引言 Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的...

    JAVA反射机制的入门代码

    在Java中,反射主要通过`java.lang.Class`类和`java.lang.reflect`包中的几个关键类(如`Constructor`、`Method`和`Field`)来实现。当你在程序运行时获取到一个类的`Class`对象,你就可以获取该类的所有信息,包括...

    java 利用反射获取内部类静态成员变量的值操作.docx

    ### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...

    Java反射机制总结

    Java反射的核心类和接口主要包括`Class`、`Constructor`、`Method`和`Field`: - **Class类**:表示Java中的类或接口,是反射的核心,提供了获取类的各种信息的方法。 - **Constructor类**:表示类的构造器,可以...

    java反射-英文版反射规范

    ### Java反射机制详解 #### 一、概述 Java反射机制是一种强大的编程技术,它允许运行时检查类的信息并操作对象的内部结构。本篇将基于Sun公司的官方文档《Java™ Core Reflection API and Specification》(1997年...

    解析并创建XML文件和Java的反射

    Java的反射机制则是Java编程语言提供的一种强大的功能,允许程序在运行时检查类、接口、字段和方法的信息,并能够动态调用方法和创建对象。 在解析XML文件时,Java提供了多种API,其中最常用的是DOM(Document ...

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    Java反射经典实例

    Java反射是Java编程语言中的一个强大特性,它允许运行时的程序访问并操作类、接口、字段和方法等信息,即使这些信息在编译时并未明确知晓。在Java中,反射通常通过`java.lang.Class`类和相关的API来实现。本实例将...

    实战java反射机制-让你迅速认识java强大的反射机制

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息,甚至动态地创建对象并调用其方法。通过反射,开发者可以实现高度灵活和动态的代码,这对于框架开发、元编程...

    java反射经典实例

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本“Java反射经典实例”中,我们将深入探讨这个主题,了解如何利用反射来访问和修改私有属性以及...

    Java反射简单例子

    在Java中,反射机制主要用到了java.lang.Class、java.lang.reflect.Method、java.lang.reflect.Field和java.lang.reflect.Constructor这四个类。下面我们将详细探讨Java反射的基本概念、使用场景以及如何通过`...

Global site tag (gtag.js) - Google Analytics