回答編集履歴
1
変数宣言のミスを修正・解説を追記
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
|
}
|