java - How to know that all of the member variables of an instance have not been set? -


let's created instance in java of class person

public class person {  private string name;  private int age;  // lot of other member variables  // set here } 

how know whether instance @ least have 1 of member variables being set (without checking of variables 1 one?

for example :

person person  = new person(); person person1 = new person(); person1.setname("john"); 

i need know person instance has not set variables. person1 has set @ least 1 variable.

what can think solving

  1. create boolean flag being changed true in every set method, or
  2. create method checking variables 1 one.

but wonder if there's way more elegant this.

this 1 way done (not recommended production because doesn't check javabean style variables).

with have call

helper.hassomethingbeensetted

with object parameter.

package com.intellij.generatetestcases.javadoc;  import java.lang.*; import java.lang.reflect.*; import java.util.*; import java.util.regex.*;  import static com.intellij.generatetestcases.javadoc.person.helper.hassomethingbeensetted;  public class person {      public string getname() {         return name;     }      public void setname(string name) {         this.name = name;     }      public int getage() {         return age;     }      public void setage(int age) {         this.age = age;     }      private string name;     private int age;      // lot of other member variables     // set here     public static void main(java.lang.string[] args) throws invocationtargetexception, illegalaccessexception {          person person = new person();         system.out.println("has been set something: " + hassomethingbeensetted(person));          person person1 = new person();         person1.setage(3);         system.out.println("has been set something: " + hassomethingbeensetted(person1));           person person2 = new person();         person2.setname("john");         system.out.println("has been set something: " + hassomethingbeensetted(person2));      }      public  static class helper {          public static boolean hassomethingbeensetted(person person) throws illegalaccessexception, invocationtargetexception {             // todo javabean style attributes              // todo flag indicate has been set, false default             boolean somethingsetted = false;              class<? extends person> aclass = person.getclass();             method[] methods = aclass.getmethods();             (method method : methods) {                 if (method.getdeclaringclass().equals(aclass) && method.getmodifiers() == modifier.public) {                     matcher matcher = pattern.compile("get(\\p{lu}[a-za-z]*)").matcher(method.getname());                     if (matcher.find()) {                         // assuming there getter fixme check manually                         object value = method.invoke(person);                         if (value != null) {                             class<? extends object> clazz = value.getclass();                             if (iswrappertype(clazz)) {                                 if (clazz.equals(boolean.class)) {                                     if (default_boolean != (boolean) value) {                                         somethingsetted = true;                                     }                                 } else if (clazz.equals(byte.class)) {                                     if (default_byte != (byte) value) {                                         somethingsetted = true;                                     }                                 } else if (clazz.equals(short.class)) {                                     if (default_short != (short) value) {                                         somethingsetted = true;                                     }                                 } else if (clazz.equals(integer.class)) {                                     if (default_int != (integer) value) {                                         somethingsetted = true;                                     }                                 } else if (clazz.equals(long.class)) {                                     if (default_long != (long) value) {                                         somethingsetted = true;                                     }                                 } else if (clazz.equals(float.class)) {                                     if (default_float != (float) value) {                                         somethingsetted = true;                                     }                                 } else if (clazz.equals(double.class)) {                                     if (default_double != (double) value) {                                         somethingsetted = true;                                     }                                 }                             } else {                                 somethingsetted = true;                             }                         }                      }                 }             }             return somethingsetted;         }          private static final hashset<class<?>> wrapper_types = getwrappertypes();           public static boolean iswrappertype(class<?> clazz) {             return wrapper_types.contains(clazz);         }          private static hashset<class<?>> getwrappertypes() {             hashset<class<?>> ret = new hashset<class<?>>();             ret.add(boolean.class);             ret.add(character.class);             ret.add(byte.class);             ret.add(short.class);             ret.add(integer.class);             ret.add(long.class);             ret.add(float.class);             ret.add(double.class);             ret.add(void.class);             return ret;         }          private static boolean default_boolean;         private static byte default_byte;         private static short default_short;         private static int default_int;         private static long default_long;         private static float default_float;         private static double default_double;     }   } 

Comments

Popular posts from this blog

linux - Using a Cron Job to check if my mod_wsgi / apache server is running and restart -

actionscript 3 - TweenLite does not work with object -

jQuery Ajax Render Fragments OR Whole Page -