package com.billkuker.rocketry.motorsim;\r
\r
+import java.lang.reflect.Field;\r
+import java.lang.reflect.Modifier;\r
import java.text.DecimalFormat;\r
import java.text.NumberFormat;\r
import java.util.HashSet;\r
}\r
return u;\r
}\r
+ \r
+ @SuppressWarnings("unchecked")\r
+ public <T extends Quantity> Unit<T> getPreferredUnit(Class<T> q){\r
+ for( Unit<?> u : units ){\r
+ try {\r
+ return u.asType(q); \r
+ } catch ( ClassCastException e ) {\r
+ //Not compatible\r
+ }\r
+ }\r
+ try {\r
+ Field f = q.getDeclaredField("UNIT");\r
+ if ( Modifier.isStatic(f.getModifiers()) ){\r
+ if ( Unit.class.isAssignableFrom(f.getType())){\r
+ return (Unit<T>)f.get(null);\r
+ }\r
+ }\r
+ } catch (SecurityException e) {\r
+ e.printStackTrace();\r
+ } catch (NoSuchFieldException e) {\r
+ e.printStackTrace();\r
+ } catch (IllegalArgumentException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ } catch (IllegalAccessException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ return null;\r
+ }\r
}\r
\r
public static <T extends Quantity> String ammountToString(Amount<T> a) {\r