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

質問編集履歴

3

質問内容の引き継ぎ

2018/11/02 23:15

投稿

tekondo
tekondo

スコア26

title CHANGED
File without changes
body CHANGED
@@ -54,4 +54,8 @@
54
54
  ### 補足情報(FW/ツールのバージョンなど)
55
55
  java -JDK8
56
56
 
57
- 参考URL:http://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html
57
+ 参考URL:http://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html
58
+
59
+ ## 注意
60
+ この質問は
61
+ [リンク内容](https://teratail.com/questions/155875)に引き継ぎました。

2

作成したいクラス名の修正

2018/11/02 23:15

投稿

tekondo
tekondo

スコア26

title CHANGED
File without changes
body CHANGED
@@ -37,12 +37,18 @@
37
37
  ```
38
38
  作成したいインスタンスのクラスは以下のようになっています。
39
39
 
40
+ `#内容修正後`
41
+
40
42
  ```java
41
- class ProgramToken extends AllExp{//プログラム
43
+ public class ProgramNameToken extends AllExp{//program名
42
- ProgramToken(AllExp parent_exp) {//このコンストラクタを実行したい
44
+ public ProgramNameToken(AllExp parent_exp) {
43
- super(parent_exp);
45
+ super(parent_exp);
46
+ }
47
+ public AllExp exp_rule() {
48
+ new NameToken(this);
49
+ return this;
50
+ }
44
51
  }
45
- }
46
52
  ```
47
53
 
48
54
  ### 補足情報(FW/ツールのバージョンなど)

1

内容の補足

2018/10/29 14:02

投稿

tekondo
tekondo

スコア26

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  動的にクラスからインスタンスを作りたいです。
4
4
  そのためにリフレクション機能を使おうと思っているのですが、うまく行きません。
5
+ `forname()`を用いて文字列からクラスを作成後、コンストラクタを`constractor`を用いて作成しようとする段階でerrorが起きてしまいます。
5
6
 
7
+ 何が原因かわかる方いらっしゃいますでしょうか?
8
+
9
+
6
10
  ### 発生している問題・エラーメッセージ
7
11
 
8
12
  ```
@@ -12,6 +16,7 @@
12
16
  ```
13
17
 
14
18
  ### 該当のソースコード
19
+ 実行しているメソッド
15
20
 
16
21
  ```java
17
22
  void make_class(AllExp parent,String strClass){
@@ -22,7 +27,7 @@
22
27
  Class<?> class_name = Class.forName(strClass);
23
28
  // インスタンスの生成
24
29
  Constructor constructor = class_name.getConstructor(AllExp.class);
25
- Class<?>[] type = {AllExp.class};
30
+ //ここでエラー発生
26
31
  constructor.newInstance(parent);
27
32
  } catch(ReflectiveOperationException e) {
28
33
  e.printStackTrace();
@@ -34,16 +39,13 @@
34
39
 
35
40
  ```java
36
41
  class ProgramToken extends AllExp{//プログラム
37
- ProgramToken(AllExp parent_exp) {
42
+ ProgramToken(AllExp parent_exp) {//このコンストラクタを実行したい
38
43
  super(parent_exp);
39
44
  }
40
45
  }
41
46
  ```
42
47
 
43
- ### 試したこと
44
-
45
- ここに問題に対して試したことを記載してください。
46
-
47
48
  ### 補足情報(FW/ツールのバージョンなど)
49
+ java -JDK8
48
50
 
49
51
  参考URL:http://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html