2009-01-29
private なフィールドから値を取得/設定する
たまにはブログを書かないと、周りの人から「この人生きてるの…?」という疑問を持たれかねないので無理矢理エントリを上げてみる。
とはいえ、最近忙しくてPHP書けてないのでお仕事してるJavaのコードを貼り付けてみる。
private なフィールドから値を取得・設定するサンプル。
package jp.devworks.sample; import java.lang.reflect.Field; public class FieldUtil { /** * フィールドの値を取得します。<br /> * public/private おかまいなしです。 getter/setter なくても取得可能 * * @param obj * 取得対象オブジェクト * @param name * 取得対象フィールド名 * @return フィールドの値 */ public static Object get(Object obj, String name) { if (obj == null || name == null) { return null; } Field f = null; Object result = null; try { f = obj.getClass().getDeclaredField(name); f.setAccessible(true); result = f.get(obj); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return result; } /** * フィールドの値を設定します。<br /> * public/private おかまいなしです。 getter/setter なくても設定可能 * * @param obj * 設定対象オブジェクト * @param name * 設定対象フィールド名 * @param value * 設定する値 */ public static void put(Object obj, String name, Object value) { Field f = null; try { f = obj.getClass().getDeclaredField(name); f.setAccessible(true); f.set(obj, value); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
こんなの使うとカプセル化が台無しなので、乱用はダメ、ぜったい。
こういうの書いてると「Javaは便利だなぁ」と思います。
トラックバック - http://d.hatena.ne.jp/devworks/20090129/1233211971
リンク元
- 34 http://www.google.co.jp/search?q=aptana+日本語化&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 14 http://www.google.co.jp/search?hl=ja&q=aptana+日本語&btnG=検索&lr=
- 9 http://search.yahoo.co.jp/search?p=aptana+日本語化&sp=1&search_x=1&tid=top_ga1&ei=UTF-8&yuragi=off&fr=top_ga1&SpellState=n-1513524738_q-bb4CrfZyZq0cdMh7uXqQsQAAAA@@
- 9 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP304JP304&q=to_char+mysql
- 5 http://twitter.com/devworks
- 4 http://blogsearch.google.com/blogsearch?hl=ja&lr=lang_ja&oe=UTF-8&q=JAVA&num=50&um=1&ie=UTF-8&sa=N&tab=wb
- 4 http://www.google.co.jp/search?q=devworks&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 3 http://d.hatena.ne.jp/devworks
- 3 http://www.geocities.co.jp/SiliconValley-SanJose/2485/Aptana_guide.html
- 3 http://www.google.co.jp/search?hl=ja&lr=&safe=off&rlz=1B3GGGL_jaJP275JP276&q=eclipse+vbscript+プラグイン&revid=1398749338&sa=X&oi=revisions_inline&resnum=0&ct=top-revision&cd=1

