⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractentry.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
字号:
package net.sf.util.persistence;

import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import net.sf.util.StringUtil;

/**
 * IEntry的基于反射的实现,要求子类的属性为public
 * @author levin
 *
 */
public class AbstractEntry implements IEntry {
	
	public AbstractEntry() {
		super();
		initContent();
	}
	public String toXML() {
		StringBuffer sb=new StringBuffer();
		sb.append("<").append(this.getClass().getSimpleName().toLowerCase()).append(" ");
		Field[] fields=this.getClass().getDeclaredFields();
		for(int i=0;i<fields.length;i++){
			try {
				sb.append(fields[i].getName()).append("=\"").append(StringUtil.encodeXml((String) fields[i].get(this))).append("\" ");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		sb.append("/>");
		return sb.toString();
	}
	public String[] getContent() {
		Field[] fields=this.getClass().getDeclaredFields();
		String[] ss=new String[fields.length];
		for(int i=0;i<fields.length;i++){
			try {
				ss[i]=(String) fields[i].get(this);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return ss;
	}
	public void setContent(String[] ss) {
        if (ss.length != this.getClass().getDeclaredFields().length)
            return;
        for (int i = 0; i < ss.length; i++) {
			try {
				this.getClass().getDeclaredFields()[i].set(this, ss[i]);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	public String getProperty(String propertyName) {
		Field[] fields=this.getClass().getDeclaredFields();
		for(int i=0;i<fields.length;i++){
			if(fields[i].getName().equals(propertyName)){
				try {
					return (String) fields[i].get(this);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return null;
	}
	public Map getProperties() {
		Map<String,Object> map=new HashMap<String,Object>();
		Field[] fields=this.getClass().getDeclaredFields();
		for(int i=0;i<fields.length;i++){
			try {
				map.put(fields[i].getName(), fields[i].get(this));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return map;
	}
	public void setProperty(String prop, String value) {
		try {
			this.getClass().getDeclaredField(prop).set(this, value);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public String[] getFieldNames() {
		Field[] fields=this.getClass().getDeclaredFields();
		String[] ss=new String[fields.length];
		for(int i=0;i<fields.length;i++){
			ss[i]=(String) fields[i].getName();
		}
		return ss;
	}
	
	public String[] getFieldDescs() {
		Field[] fields=this.getClass().getDeclaredFields();
		String[] ss=new String[fields.length];
		for(int i=0;i<fields.length;i++){
			ss[i]=(String) fields[i].getAnnotation(EntryTag.class).desc();
		}
		return ss;
	}
	
	@Override
	public String toString() {
		return toXML();
	}
	
	protected void initContent(){
		String[] ss=new String[getContent().length];
		Arrays.fill(ss, "");
		setContent(ss);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -