不通过getXXX()方法获取类的私有域:
public class TestPrintBean {
private String priveteField;
private String priveteField2;
protected String protectedField;
public String publicField;
/**
* @return the priveteField
*/
public String getPriveteField() {
return priveteField;
}
/**
* @param priveteField
* the priveteField to set
*/
public void setPriveteField(String priveteField) {
this.priveteField = priveteField;
}
/**
* @return the priveteField2
*/
public String getPriveteField2() {
return priveteField2;
}
/**
* @param priveteField2
* the priveteField2 to set
*/
public void setPriveteField2(String priveteField2) {
this.priveteField2 = priveteField2;
}
/**
* @return the protectedField
*/
public String getProtectedField() {
return protectedField;
}
/**
* @param protectedField
* the protectedField to set
*/
public void setProtectedField(String protectedField) {
this.protectedField = protectedField;
}
/**
* @return the publicField
*/
public String getPublicField() {
return publicField;
}
/**
* @param publicField
* the publicField to set
*/
public void setPublicField(String publicField) {
this.publicField = publicField;
}
}
public class PrintUtil {
/**
* this method can print all the not-null value of fields that the given
* object has.
*
* @param obj
* : any object that you want to print
*/
public static void print(Object obj) {
try {
// get the object's class
Class clazz = obj.getClass();
// get all the fields that this object has
Field[] fields = clazz.getDeclaredFields();
String fieldName = "";
Object fieldValue;
if (fields != null && fields.length > 0) {
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
// if and only if we set accessible to true,
// we can access all fields, no matter which scope it is
field.setAccessible(true);
fieldValue = field.get(obj);
if (fieldValue != null) {
fieldName = field.getName();
System.out.println(fieldName + ":\t\t" + fieldValue);
}
}
}
} catch (Exception e) {
throw new RuntimeException("can not print ["
+ obj.getClass().getName() + "] field");
}
}
// this is for test
public static void main(String[] args) {
TestPrintBean tpb = new TestPrintBean();
tpb.setPriveteField("this is a value of private field");
tpb.setProtectedField("this is a value of protected field");
tpb.setPublicField("this is a value of public field");
print(tpb);
}
}
分享到:
相关推荐
资源介绍: 学习过其他语言的同学都知道,类都是有公共属性的,可以直接用赋值的方式来修改,但易语言只有私有成员,无法直接用赋值的方式来改动私有成员的数据值,这个例程演示了如何把内部私有成员的数据地址跟...
学习过其他语言的同学都知道,类都是有公共属性的,可以直接用赋值的方式来修改,但易语言只有私有成员,无法直接用赋值的方式来改动私有成员的数据值,这个例程演示了如何把内部私有成员的数据地址跟外部变量的变量...
易语言从外部访问类的私有成员源码,从外部访问类的私有成员,私有成员外部初始化,测试_输出私有成员的值,子程序_说明,取变量数据地址_ASM,变量_ASM变量地址还原数据指针,变量_ASM变量地址指向新数据地址
学习过其他语言的同学都知道,类都是有公共属性的,可以直接用赋值的方式来修改,但易语言只有私有成员,无法直接用赋值的方式来改动私有成员的数据值,这个例程演示了如何把内部私有成员的数据地址跟外部变量的...
易语言从外部访问易语言类的私有成员源码.rar 易语言从外部访问易语言类的私有成员源码.rar 易语言从外部访问易语言类的私有成员源码.rar 易语言从外部访问易语言类的私有成员源码.rar 易语言从外部访问易语言类...
外部访问类的私有成员+修改虚表 这种操作说明了C++的无所不能
易语言源码从外部访问易语言类的私有成员源码.rar 易语言源码从外部访问易语言类的私有成员源码.rar 易语言源码从外部访问易语言类的私有成员源码.rar 易语言源码从外部访问易语言类的私有成员源码.rar 易语言...
Java反射机制,万物皆对象,class也是一个类的对象,通过类类型,反射获得类的成员属性,构造方法,成员方法,并调用类中的方法,也可以调用私有方法。
类的对象不能直接访问类声明的私有成员变量,否则破坏了信息隐藏的目的。 在C++中,为了防止某些数据成员或成员函数从外部被直接访问,可以将它们声明为private,这样编译器会阻止任何来自外部非友元的直接访问。 ...
访问私有或者保护成员的技巧! 值得下载看看!资源免费,大家分享!!
前言 在面向对象的编程范式中,封装都是必不可...约定以下划线’_’开头的成员名作为私有成员,仅允许类成员方法访问调用,外部不得访问私有成员。简单的代码如下: JavaScript var MyClass = function () { this._p
C#net反射实现访问类中的私有变量或者方法
#include <stdio.h> class A { private: char *str; public: A(): str("nothing"){}; }; int main() { A a; return 0; }
编写Student类,类中包含学生姓名,学号等私有数据成员。 使用JAVA反射机制修改一个学生对象的私有数据成员(不允许调用setters)
访问一个类的私有成员不是什么好做法,大家也都知道私有成员在外部是不能被访问的,这篇文章主要给大家介绍了关于C#访问及调用类中私有成员与方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
当位于基类的名称之前时,private 关键字指定基类的公共成员和受保护成员为派生类的私有成员。 类中成员的默认访问是私有的。结构或联合中成员的默认访问是公共的。 基类的默认访问对于类是私有的,而对于结构是公共...
从外部访问易语言类的私有成员源码
私有成员变量: __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。 保护成员变量: _foo:以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行...