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

回答編集履歴

1

コンパイルエラーの解決方法

2020/12/26 03:35

投稿

moromon
moromon

スコア86

answer CHANGED
@@ -10,4 +10,45 @@
10
10
  person.setGender("Male");
11
11
 
12
12
  Personのnameとgenderをpublicにするか、setter,getterを作ってあげてください。
13
- 偉そうにすみませんが、まずはそこからだと思います。
13
+ 偉そうにすみませんが、まずはそこからだと思います。
14
+
15
+
16
+
17
+
18
+ こちら原因がわかりました。
19
+ Javaの基本的なことでした。気づかなくてすみません。
20
+
21
+ Javaは、システムに大きな障害を発生させうる例外については、明示的に例外処理する必要があります。
22
+
23
+ あとえばMain関数をこのように書いてみてください。
24
+
25
+ ```java
26
+ public static void main(String[] args) {
27
+ Person person = new Person();
28
+ person.setName("Taro");
29
+ person.setGender("Male");
30
+
31
+ Field[] fields = person.getClass().getFields();
32
+
33
+ for (Field f : fields) {
34
+ if(f.isAnnotationPresent(Test.class)) {
35
+ String val = f.getAnnotation(Test.class).val();
36
+ String result = null;
37
+ try {
38
+ result = f.get(person).toString();
39
+ } catch (IllegalAccessException e) {
40
+ e.printStackTrace();
41
+ }
42
+ System.out.println(val + ": " + result);
43
+ }
44
+ }
45
+ }
46
+
47
+ ```
48
+
49
+ こうすればコンパイル時のエラーは消えます。動作ができているかはご自身でもう一度確かめてみてください。
50
+
51
+ エラー処理の方法は二つありますが、今回はそのうちの一つを書きました。
52
+ こちらも参考になるとよいのですが↓
53
+
54
+ https://ja.stackoverflow.com/questions/11599/java%e3%81%ae%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e7%90%86%e8%a7%a3%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93