📄 abstractentry.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 + -