###前提・実現したいこと
javaにて、iniファイルからクラス名を取得し特定の名称のメソッドを実行したい
###発生している問題・エラーメッセージ
まだjavaの学習を始めて1週間そこらですが私用にツールを作成しています。
その際、ソースの書き方について解らない所が有り質問させて頂きます。
■ソース階層
/pre/tls/clk/openview.java
/pre/tls/mytls.java
/pre/lay/view1.java
/pre/ini/cnfg.ini
■質問
上記[■ソース階層]のファイルが存在し、[cnfig.ini]より文字列として[view1.java]のクラス名として[pre.lay.view1]という値を取得し、
[view1]クラスの[hoge]メソッドを実行するには[openview.java]にどの様に書いたら良いのでしょうか?
###該当のソースコード
Java
■[openview.java]///////////////////////////////////////// package pre.tls; import pre.tls.*; import pre.tls.mytls; import pre.lay.*; import java.util.Properties; public class openview{ public void main(String args[]){ Properties prtys = new Properties(); prtys = mytls.iniload("pre/ini/cnfg.ini"); String paTh = prtys.getProperty("view1pah"); // ここが解りません } } ■[mytls.java]/////////////////////////////////////////////// package pre.tls; import java.net.UnknownHostException; import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; public class mytls{ public static Properties iniload(String viwsPath){ Properties prty = new Properties(); try{ InputStream inPut = new FileInputStream(viwsPath); prty.load(inPut); inPut.close(); } catch(Exception e){ System.out.println(e.getMessage()); } return prty; } ■[view1.java]/////////////////////////////////////////////// package pre.lay public class view1{ public static hoge(){ System.out.println("Hello Java World"); } } ■[cnfg.ini]/////////////////////////////////////////////////// view1pah=pre.lay.view1.java
###試したこと
dsuzuki さんに教えていただいた事を
//ここが解りません
の箇所に以下を記述し、無事巧くいきました。
実行ソースを下記に書きます。
■記述内容
try{
Class<?> clzz = Class.forName(paTh);
Method mthd = clzz.getMethod("vhoge");
mthd.invoke(clzz.newInstance());
} catch(ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e2){
e2.printStackTrace();
}
###補足情報(言語/FW/ツール等のバージョンなど)
■使用言語
Java
■使用ツール
サクラエディタ
コマンドプロンプト
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/14 12:29