2018年8月16日 星期四

_getl __set

abstract class Object {

    public function 
__get($strProperty) {
        
$objReflect = new ReflectionClass($this);
        
$strProperty strtoLower($strProperty[0]) . substr($strProperty1);

        foreach (
$objReflect->getDefaultProperties() as $key => $strProp) {
            
$key strtoLower($key[0]) . substr($key1);
            if (
$key == $strProperty) {
                return 
$this->{$key};
            }
        }
    }

    public function 
__set($strProperty$strData) {
        
$objReflect = new ReflectionClass($this);
        
$strProperty strtoLower($strProperty[0]) . substr($strProperty1);

        foreach (
$objReflect->getDefaultProperties() as $key => $strProp) {
            
$key strtoLower($key[0]) . substr($key1);
            if (
$key == $strProperty) {
                
$this->{$key} = $strData;
            }
        }
    }

================================================================================
import java.lang.reflect.Field;
import java.lang.reflect.Type;

public class test {
 /* …… Private vars …… */
  private int var1;
  private char var2;
  private long var3;
  private Integer var4;
  private String var5;
 /* …… Public functions …… */
  public void set_vars() {
   var1 = 42;
   var2 = 41;
   var3 = 40;
   var4 = Integer.valueOf(39);
   var5 = "Hello world";
  }
  public Object get(String var_name) throws Exception {
   System.out.print("getlled: ");
   Field f = this.getClass().getDeclaredField(var_name);
   Type t = f.getGenericType();
   String type_name = t.toString();
   if (type_name.equals("boolean")) {
    return Boolean.valueOf(f.getBoolean(this)); }
   else if (type_name.equals("byte")) {
    return Byte.valueOf(f.getByte(this)); }
   else if (type_name.equals("char")) {
    return Character.valueOf(f.getChar(this)); }
   else if (type_name.equals("double")) {
    return Double.valueOf(f.getDouble(this)); }
   else if (type_name.equals("float")) {
    return Float.valueOf(f.getFloat(this)); }
   else if (type_name.equals("int")) {
    return Integer.valueOf(f.getInt(this)); }
   else if (type_name.equals("long")) {
    return Long.valueOf(f.getLong(this)); }
   else if (type_name.equals("short")) {
    return Short.valueOf(f.getShort(this)); }
   else {
    return f.get(this); }
  }
  public Object set(String var_name, Object var_value) {
   /* Analogous to the universal getter; use the functions
    *  Field.set*(Object obj, * value)
    * and
    *  Field.set(Object obj, Object value)
    * as seen on http://java.sun.com/javase/6/docs/api/java/lang/reflect/Field.html
   */
   return null;
  }
 /* …… Main …… */
  public static void main(String[] argv) {
   test b = new test();
   b.set_vars();
   try {
    System.out.println(b.get("var1    System.out.println(b.get("var2    System.out.println(b.get("var3    System.out.println(b.get("var4    System.out.println(b.get("var5}
   catch (Exception e) {
    System.out.println("OMG An exception!"); }
  }
};