オブジェクト変数にコードを追加して後で実行できるかどうかは疑問ですが、
私はこのような何かをしたい:Javaで変数にコードを追加する
MyClass c = new MyClass();
c.addCode(
//Add my code here
);
c.runCode();
オブジェクト変数にコードを追加して後で実行できるかどうかは疑問ですが、
私はこのような何かをしたい:Javaで変数にコードを追加する
MyClass c = new MyClass();
c.addCode(
//Add my code here
);
c.runCode();
あなたはあなたのクラス内のメソッドでそのコードを定義し、neccessaryされるたびにそれを呼び出す必要があります。あなたがタスクを実行したいc.runCode();
:たとえば:として
public class MyClass{
public MyClass(){ ... }
public void runCode(){
// Your code goes here
}
}
次に、あなたのコードにアクセスすることができます。
Java 1.5以上を使用する場合は、java.util.concurrentパッケージをご覧ください。
ExecutorServiceやRunnableなどのインターフェイスが役立つことがあります。
あなたの変数の型がQueue<Runnable>
、のような、ある、または内部で持っている場合は、ExecutorService.executeているあなたの「RUNCODE」機能()
で私が意味する、あなたが望むものを達成するために、このようなRunnableのクラスのインスタンスを作成しますa Queue<Runnable>
です。新しいRunnable
をキューに追加するだけです。
あなたの質問に正しく疑問がある場合は、実行中にプログラムのソースを動的に編集するように見えますか?厳密には不可能ではありませんが、そうすることは非常に危険です。
これを回避するには、制御構造を安全かつ適切に使用する必要があります。
//i want to add code to program
methodWithCode();
void methodWithCode(){
// code here
}
や条件文の内側:
はちょうどあなたがメソッドの内部で「追加」したいコードを置きます。
if(i_want_to_add_code){
// code here
}
まあvaribleを持つことのポイントは – user1198255
alltogetherクラスを取り除くことである。しかし、変数を宣言するためにクラスがすでに存在している必要があります。あなたはこれを何のために使いたいですか? – Brian
ブライアンは言ったように、 'MyClass'がなくても' c'をインスタンス化することはできません。 「MyClass」を取り除くためのあなたの動機は何ですか?実行時にコードを書くようなことをしようとしていますか? – ggrigery