码迷,mamicode.com
首页 > 编程语言 > 详细

JavaSE8基础 Class 获取与设置非静态私有成员变量

时间:2017-10-08 16:56:24      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:lang   main   pack   logs   throw   private   exception   release   import   

礼悟:
           好好学习多思考,尊师重道存感恩。叶见寻根三返一,活水清源藏于零。
           虚怀若谷良心主,皓月当空自在王。愿给最苦行无悔,诚劝且行且珍惜。


 

    os :windows7 x64
    jdk:jdk-8u131-windows-x64
    ide:Eclipse Oxygen Release (4.7.0)



被解析类的代码:

package blog.jizuiku2;

/**
 * 
 * 
 * @author jizuiku
 * @version V17.10.02
 */
public class Person {
	// 成员变量
	public    int age;
	private   String password;
	protected String name;
			  int score;
	
	public    static   int ageStatic=13;
    private   static String passwordStatic="hello world";
	protected static String nameStatic;
			  static int scoreStatic;
			  
	// 构造方法
	
	public    Person(int age) {System.out.println("public GZ:int");}
	public    Person(int age,int score) {System.out.println("public GZ:int,int");}
	private   Person() {System.out.println("private GZ:");}
	protected Person(String name) {System.out.println("protected GZ:String");}
			  Person(int age,String name){this.age=age;this.name=name;System.out.println("default GZ:int,String");}
	
	// 成员方法
			  
	public void sayHello(String name) {}
	private int sayHello() {return 1;}
	protected String sayHello(int age) {return "";}
			  void	sayHello(int age,String name) {}
	
			  
	public void sayHelloStatic(String name) {}
	private int sayHelloStatic() {return 1;}
	protected String sayHelloStatic(int age) {return "";}
			  void	sayHelloStatic(int age,String name) {}
	
	@Override
	public String toString() {
			return "Person [age=" + age + ", password=" + password + ", name=" + name + ", score=" + score + "]";
	}
	
	
}

 
演示类:

package blog.jizuiku2;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

/**
 * Class 非静态成员变量的获取与设置
 * 
 * @author jizuiku
 * @version V17.10.02
 */
public class ClassGetNormalFieldDemo {
	public static void main(String[] args) throws Exception {
		String className = "blog.jizuiku2.Person";
		Class c = Class.forName(className);
		
		// 获取所有的成员变量
		System.out.println("该类中所有的成员变量如下:");
		Field[] fs = c.getDeclaredFields();
		for (Field field : fs) {
			System.out.println(field);
		}
		
		System.out.println();
		
		// 获取所有的构造方法
		System.out.println("该类中所有的构造函数如下:");
		Constructor[] cons = c.getDeclaredConstructors();
		for (Constructor constructor : cons) {
			System.out.println(constructor);
		}
		
		System.out.println();
		
		// 使用 blog.jizuiku0.Person(int,java.lang.String) 构造函数
		Constructor con = c.getDeclaredConstructor(int.class,java.lang.String.class);
		// 设置访问权限
		con.setAccessible(true);
		Object obj = con.newInstance(1,"hello");
		System.out.println((blog.jizuiku2.Person)obj);
		
		// 获取某一成员变量 并 对其赋值
		Field passwordField = c.getDeclaredField("password");
		// 设置为可以访问
		passwordField.setAccessible(true);
		// 对obj对象的password进行赋值
		passwordField.set(obj, "javaer");
		System.out.println(passwordField.get(obj));
		
	}
}

 
结果:
技术分享




Java优秀,值得学习。
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。

JavaSE8基础 Class 获取与设置非静态私有成员变量

标签:lang   main   pack   logs   throw   private   exception   release   import   

原文地址:http://www.cnblogs.com/jizuiku/p/7637706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!