teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

変数宣言のミスを修正・解説を追記

2016/06/28 03:31

投稿

tignear
tignear

スコア260

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  何がしたいのかいまいちよくわかりませんがインスタンス変数(ただしくはstaticじゃない変数)を取得するものを書いてみました・・
2
2
  ```java
3
- static t=new T();
3
+ static T t=new T();//staticなのは単純にmainから呼べないからです
4
4
  public static void main(String args[]){
5
5
  Field[] fl =getInstaceField(T.class);//クラスのまま指定する場合
6
6
  Field[] fl2 =getInstaceField(t.getClass());//インスタンスを指定する場合
@@ -9,10 +9,12 @@
9
9
  }
10
10
  }
11
11
  static Field[] getInstaceField(Class<?> c){
12
- Field[] ml=c.getDeclaredFields();
12
+ Field[] ml=c.getDeclaredFields();//ここにstaicも含めた変数が入る
13
+ //c.getDeclaredFields()によってこのクラスのフィールドをすべて取得している
13
- ArrayList<Field> r=new ArrayList<Field>();
14
+ ArrayList<Field> r=new ArrayList<Field>();//staticじゃない変数が入る
14
15
  for(Field m:ml){
15
16
  if(!Modifier.isStatic((m.getModifiers()))){
17
+ //Modifier.isStatic((m.getModifiers()))によってstaticフィールドなのか判定
16
18
  r.add(m);
17
19
  }
18
20
  }