2017-01-15 1 views
0

実際のプログラムディレクトリ/ jarの外で、私のプログラムにjava構造体と拡張子を持つファイルをarraylistに追加したいと考えています。Javaファイル構造をJavaプログラムに持ち出す

例、

Test.java、Cにある:\ Users \ユーザーユーザー\デスクトップ\ Test.java MyProgram.java

public class Test extends Object { 

    public Test() {} 

    public void someMethod() {} 

} 

(瓶外)

import java.util.ArrayList; 

public class MyProgram extends Object { 

    public MyProgram() {} 

    public void readIn() { 

     ArrayList<Object> list = new ArrayList<Object>(); 
     list.add(Test.java); 

    } 

} 

明らかに多くのことが行われる必要がありますが、うまくいけば、あなたはその点を理解しています。

Test.javaで読み込み - それを何らかの形で変換して、拡張のためarraylistに追加します。したがって、拡張子がObjectではなくFamilyの場合、arraylistは代わりにArrayListになり、TestはFamilyを拡張します。

編集

コメントで述べたように、これはプラグインのメカニズムへのアプローチです。

+0

あなたはいくつかの_plugin_メカニズムを考えていますか?そうでなければ、私はあなたの質問が不明であることを恐れる。詳細をお知らせください。 – Seelenvirtuose

+0

それは基本的にプラグインのメカニズムです、あなたは正しいです。そのような質問を語ることは実際には非常に困難でした。 –

+0

次に、Javaの組み込みの[サービスプロバイダの仕組み](https://docs.oracle.com/javase/tutorial/ext/basics/spi.html)について学ぶ必要があります。 – Seelenvirtuose

答えて

0

この質問に対する回答は、seelenvirtuoseの提案とcrick_007に由来しています。クラスパスの外にあるクラスにアクセスするには、ClassLoaderを作成してクラスをロードするだけです。 2つのクラス間でやりとりするインターフェイスを使用する必要があります。最後に、パッケージングも同じでなければなりません。そうでなければ、エラーが発生します。

PACKAGENAME.CLASSは、クラス名がプログラムと同じ名前であってもキャストできません(試したテスト)

関連する問題