getField获得类中指定的public属性;getDeclaredField返回指定类中指定的属性(任何可见性)。看下面一个简单的例子:
- package com;
- import java.lang.reflect.Field;
- import java.util.*;
- public class MyUtil {
- public static void main(String[] args) {
- testFields();
- }
- public static void testFields() {
- try {
- System.out.println("Declared fields: ");
- Field[] fields = Dog.class.getDeclaredFields();
- for(int i = 0; i < fields.length; i++) {
- System.out.println(fields[i].getName()); // 此处结果是color, name, type, fur
- }
- System.out.println("Public fields: ");
- fields = Dog.class.getFields();
- for(int i = 0; i < fields.length; i++) {
- System.out.println(fields[i].getName()); // 此处结果是color, location
- }
- Dog dog = new Dog();
- dog.setAge(1);
- Method method = dog.getClass().getMethod("getAge", null);
- Object value = method.invoke(dog);
- System.out.println(value); // 此处结果是1
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- class Dog extends Animal {
- public int color;
- protected int name;
- private int type;
- int fur;
- }
- class Animal {
- public int location;
- protected int age;
- private int height;
- int length;
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
可见,getDeclaredField可以获得类中任何可见性的属性不包括基类,而getField只能获得public属性包括基类的public属性。如果需要获取基类某个非public属性的值,则只能通过反射来调用方法了,从上述code可以看到。注意,getField只能得到public方法。
相关推荐
Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,其中包括Spring、Hibernate等。原理性的问题不是本文的重点,接下来让我们在实例中...
在运行时,对一个JAVA类,能否知道属性和方法;能否调用它的任意方法? 答案是可以的,JAVA提供一种反射机制可以实现。 java 反射机制,包括getclass ,getfield 等等
动态取得R文件的int值,通过string-array name属性动态获取R.array.xxx的int值 代码如下://通过string-array name属性动态获取R.array.xxx的int值public ... Field intField = arrayClass.getField(name); int
getField方法是ThinkPHP中用来获取字段值的方法,区别于select和find方法,通常仅用于获取个别字段的值。但是事实上并没有那么简单,现将该方法的用法总结如下: 1.获取某个字段值 这个是getField方法最基本的用法,...
反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个...
Class 对象由Java虚拟机在使用到该类的时候,自动创建; Class 对象的三种获取方式: 1: Class.forName(“全类名”); 2:类对象名.getClass(); 3:类名.Class(); 通过Class 对象获得类的指定成员,构造方法 构造方法...
对象.getClass()(二)获取成员变量1.Field[] getFields()2.Field getField(String name)3.Field[] getDeclaredFields()4.Field getDeclaredField(String name)5.Field:成员变量5.1.获取值5.2.设置值(三)获取构造...
java操作dbf文件读写用的jar包。1.9版本。例子: package dbf; import java.io.FileInputStream; import java.io.InputStream; import com.linuxense.javadbf.DBFField; import com.linuxense.javadbf.DBFReader; ...
NULL 博文链接:https://simpleman7210.iteye.com/blog/1951523
操作步骤描述(参考讲义1.8)训练案例10训练描述:【讲义--1.9字段(成员变量)与数据操作】一、使用反射机制获取一个类的属性,下列关于getField()方
ObjectOutputStream ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。 ObjectOutputStream.PutField 提供对要写入 ObjectOutput 的持久字段的编程访问。 ObjectStreamClass 类的序列化...
//显示某对象的某方法和某属性 show(a,"show"); } //对未知类型的对象操作 public static void show(Object obj,String method_name)throws Exception{ Class c=obj.getClass(); Field field=c.getField...
本文实例讲述了C#利用反射技术实现去掉按钮选中时的边框效果。分享给大家供大家参考。具体如下: public void HideFocusCues(Control control) { Type vType = typeof(Control); FieldInfo vFieldInfo = vType....
主要介绍了thinkPHP数据查询常用方法,结合实例形式总结分析了select,find,getField,query等方法进行数据库查询操作的具体操作步骤与相关实现技巧,需要的朋友可以参考下
本文实例分析了C#引用访问权限问题。分享给大家供大家参考...C#和Java代码及运行结果如下 代码如下:class Super { public int field = 0; public int getField() { return field; } } class Sub : Super
LightJson 是一个简单的轻量级 Java 库,用于处理 JSON,其设计轻巧、快速、简单且易于使用。使用 LightJson1.定义一个bean @JsonObjectpublic class Bean {@JsonFieldprivate Field field;public Field getField ()...
BPEL介绍BPEL介绍BPEL介绍BPEL介绍BPEL介绍BPEL介绍
}读取APK文件,由于这个库 packer-helper 需要同时给Gradle插件和Android项目使用,所以不能添加Android相关的依赖,但是又需要读取自身APK文件的路径,使用反射实现:// for android code private static ...