반사 메커니즘을 운용하여 대상의 속성 값을 바꾸다

2076 단어 반사 메커니즘
여기에 반사 메커니즘을 활용하여 대상의 속성 값을 바꾸는 기능을 실현한다.
다음 코드 구현 기능은 다음과 같습니다.
대상의 속성 유형이 String인 필드에 대해 값이 "cloud"이 아니면 "cloud"로 변경합니다.나는 실현된 기능은 매우 간단하지만 지도적인 의의가 있다고 생각한다.독자들은 천천히 체득하세요.
 
ReflectBean 코드:
package com.cloud.reflect;

public class ReflectBean {
	private String name;
	private String password;
	private int age;
	
	public ReflectBean(String name, String password) {
		super();
		this.name = name;
		this.password = password;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getPassword() {
		return password;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return this.name + ":::" + this.password;
	}
}

 
ReflectTest 코드:
package com.cloud.reflect;

import java.lang.reflect.Field;

public class ReflectTest {
	
	public static void main(String[] args) throws Exception {
		ReflectBean reflect = new ReflectBean("chris", "cloud");
		
		changeFieldValue(reflect);
		
		System.out.println(reflect.toString());
	}
	
	public static void changeFieldValue(Object obj) throws Exception {
		Field[] fields = obj.getClass().getDeclaredFields();
		for (Field field : fields) {
			// private , , “ ” 
			field.setAccessible(true);
			// “==” , 
			if (field.getType() == String.class) {
				String oldStr = (String) field.get(obj);
				if (!"cloud".equals(oldStr)) {
					field.set(obj, "cloud");
				}
			}
		}
	}
}

 
 

좋은 웹페이지 즐겨찾기