public static void main(String[] args) {
   DynamicFields df = new DynamicFields(3);
   print(df);
   try {
     df.setField("d", "A value for d");
     df.setField("number", 47);
     df.setField("number2", 48);
     print(df);
     df.setField("d", "A new value for d");
     df.setField("number3", 11);
     print("df: " + df);
     print("df.getField(\"d\") : " + df.getField("d"));
     Object field = df.setField("d", null); // Exception
   } catch (NoSuchFieldException e) {
     e.printStackTrace(System.out);
   } catch (DynamicFieldsException e) {
     e.printStackTrace(System.out);
   }
 }
Пример #2
0
 public Object setField(String id, Object value) throws DynamicFieldsException {
   if (value == null) {
     DynamicFieldsException dfe = new DynamicFieldsException();
     dfe.initCause(new NullPointerException());
     throw dfe;
   }
   int fieldNumber = hasField(id);
   if (fieldNumber == -1) {
     fieldNumber = makeField(id);
   }
   Object result = null;
   try {
     result = getField(id);
   } catch (NoSuchFieldException e) {
     throw new RuntimeException(e);
   }
   fields[fieldNumber][1] = value;
   return result;
 }
 public Object setField(String id, Object value) throws DynamicFieldsException {
   if (value == null) {
     // Most exceptions don't have a "cause" constructor.
     // In these cases you must use initCause(),
     // available in all Throwable subclasses.
     DynamicFieldsException dfe = new DynamicFieldsException();
     dfe.initCause(new NullPointerException());
     throw dfe;
   }
   int fieldNumber = hasField(id);
   if (fieldNumber == -1) fieldNumber = makeField(id);
   Object result = null;
   try {
     result = getField(id); // Get old value
   } catch (NoSuchFieldException e) {
     // Use constructor that takes "cause":
     throw new RuntimeException(e);
   }
   fields[fieldNumber][1] = value;
   return result;
 }