JavaからScalaオブジェクトのメソッドを反射的に呼び出すにはどうすればよいですか?

David Carlson:

私は次のように定義されたscalaオブジェクトを持っています:

package com.example

object Foo {
  def bar(): String = "Interesting Result"
}

がビルドおよびランタイムクラスパスにあるFoo$.MODULE$.bar()場合FooJavaから呼び出すことができることはわかっていますが、私の状況Fooではビルドクラスパスになく、ランタイムクラスパスで構成されている場合と構成されていない場合があります。

私のJavaコードから、bar()実行時クラスパスで使用できる場合はリフレクションを使用して呼び出します。それ以外の場合は、デフォルトの実装にフォールバックします。

これは可能ですか?

David Carlson:

これは、次のようなコードで実行できます。

package com.example.java;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Example {

  /**
   * Returns null or the result of calling a method on a scala object from java
   */
  public String callScalaFromJava(){
    String result = null;

    try {
      Class<?> clazz = Class.forName("com.example.Foo$"); // Note the trailing '$'
      Method method = clazz.getDeclaredMethod("bar");
      Field field = clazz.getField("MODULE$");
      Object instance = field.get(null);
      Object obj = method.invoke(instance, new Object[] {});

      if (obj instanceof String) {
        result = (String) obj);
      }

    } catch (Exception ex) {
      // SWALLOWING
    }
    return result;
  }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javaのメソッドから呼び出されたオブジェクトを使用するにはどうすればよいですか?

分類Dev

rubyクラスの静的メソッドからオブジェクトメソッドを呼び出すにはどうすればよいですか?

分類Dev

FreeMarkerテンプレートからオブジェクトのJavaメソッドを呼び出すにはどうすればよいですか?

分類Dev

フォーマット文字列内からオブジェクトのメソッドを呼び出すにはどうすればよいですか?(Python)

分類Dev

kotlinのコンパニオンオブジェクトから親メソッドを呼び出すにはどうすればよいですか?

分類Dev

arrayList内のさまざまなオブジェクトからメソッドを呼び出すにはどうすればよいですか?

分類Dev

ArrayList内のすべてのオブジェクトのメソッドを呼び出すにはどうすればよいですか?

分類Dev

javascriptのオブジェクトの配列でメソッドを呼び出すにはどうすればよいですか?

分類Dev

配列内の各オブジェクトでメソッドを呼び出すにはどうすればよいですか?

分類Dev

C#のメソッド呼び出しでオブジェクトインスタンスを渡すにはどうすればよいですか?

分類Dev

nullオブジェクトのメソッドを呼び出すにはどうすればよいですか?

分類Dev

c ++:オブジェクトを作成せずにmain関数でメソッドを呼び出すにはどうすればよいですか?

分類Dev

HTML IDを使用してJSオブジェクト(datepickerなど)メソッドを呼び出すにはどうすればよいですか?

分類Dev

メソッドパラメータとしてオブジェクトを呼び出すにはどうすればよいですか?

分類Dev

「this」が呼び出し元のオブジェクトによってすでに取得されている場合、静的メソッド内から包含クラスを参照するにはどうすればよいですか?

分類Dev

別のメソッドを呼び出して、あるオブジェクトのメソッドからスレッドを開始するにはどうすればよいですか?

分類Dev

呼び出し可能なオブジェクトをメソッド定義として使用するにはどうすればよいですか?

分類Dev

FakeItEasyの偽のオブジェクトのメソッドを最初の呼び出しでスローし、2番目の呼び出しで返すようにするにはどうすればよいですか?

分類Dev

Javaのオブジェクトで呼び出すメソッドのみが異なるメソッドをリファクタリングするにはどうすればよいですか?

分類Dev

Javaでオブジェクトにリンクされた呼び出しを作成して、メソッドをチェーン化することで一連の命令を実行するにはどうすればよいですか?

分類Dev

ビューのボタンからカスタム メソッドを呼び出して、オブジェクトに関連付けられたファイルを削除するにはどうすればよいですか? Railsアプリ

分類Dev

Pythonコードオブジェクトから呼び出し可能オブジェクトを作成するにはどうすればよいですか?

分類Dev

Javaでオブジェクトメソッドを使用するにはどうすればよいですか?

分類Dev

親クラスのメソッド内からオブジェクトの呼び出しインスタンスを取得するにはどうすればよいですか?

分類Dev

メソッドの親オブジェクトを取得するにはどうすればよいですか?

分類Dev

オブジェクトの名前の文字列がある場合、オブジェクトのメソッドを呼び出すにはどうすればよいですか?

分類Dev

オブジェクト内の関数を呼び出すにはどうすればよいですか

分類Dev

インターフェイスを実装するクラスにあるメソッドを、そのインターフェイスのタイプのオブジェクトで呼び出すにはどうすればよいですか?

分類Dev

トレイトがオブジェクトセーフでない場合、2つの結果のいずれかでトレイトメソッドを呼び出すにはどうすればよいですか?

Related 関連記事

  1. 1

    Javaのメソッドから呼び出されたオブジェクトを使用するにはどうすればよいですか?

  2. 2

    rubyクラスの静的メソッドからオブジェクトメソッドを呼び出すにはどうすればよいですか?

  3. 3

    FreeMarkerテンプレートからオブジェクトのJavaメソッドを呼び出すにはどうすればよいですか?

  4. 4

    フォーマット文字列内からオブジェクトのメソッドを呼び出すにはどうすればよいですか?(Python)

  5. 5

    kotlinのコンパニオンオブジェクトから親メソッドを呼び出すにはどうすればよいですか?

  6. 6

    arrayList内のさまざまなオブジェクトからメソッドを呼び出すにはどうすればよいですか?

  7. 7

    ArrayList内のすべてのオブジェクトのメソッドを呼び出すにはどうすればよいですか?

  8. 8

    javascriptのオブジェクトの配列でメソッドを呼び出すにはどうすればよいですか?

  9. 9

    配列内の各オブジェクトでメソッドを呼び出すにはどうすればよいですか?

  10. 10

    C#のメソッド呼び出しでオブジェクトインスタンスを渡すにはどうすればよいですか?

  11. 11

    nullオブジェクトのメソッドを呼び出すにはどうすればよいですか?

  12. 12

    c ++:オブジェクトを作成せずにmain関数でメソッドを呼び出すにはどうすればよいですか?

  13. 13

    HTML IDを使用してJSオブジェクト(datepickerなど)メソッドを呼び出すにはどうすればよいですか?

  14. 14

    メソッドパラメータとしてオブジェクトを呼び出すにはどうすればよいですか?

  15. 15

    「this」が呼び出し元のオブジェクトによってすでに取得されている場合、静的メソッド内から包含クラスを参照するにはどうすればよいですか?

  16. 16

    別のメソッドを呼び出して、あるオブジェクトのメソッドからスレッドを開始するにはどうすればよいですか?

  17. 17

    呼び出し可能なオブジェクトをメソッド定義として使用するにはどうすればよいですか?

  18. 18

    FakeItEasyの偽のオブジェクトのメソッドを最初の呼び出しでスローし、2番目の呼び出しで返すようにするにはどうすればよいですか?

  19. 19

    Javaのオブジェクトで呼び出すメソッドのみが異なるメソッドをリファクタリングするにはどうすればよいですか?

  20. 20

    Javaでオブジェクトにリンクされた呼び出しを作成して、メソッドをチェーン化することで一連の命令を実行するにはどうすればよいですか?

  21. 21

    ビューのボタンからカスタム メソッドを呼び出して、オブジェクトに関連付けられたファイルを削除するにはどうすればよいですか? Railsアプリ

  22. 22

    Pythonコードオブジェクトから呼び出し可能オブジェクトを作成するにはどうすればよいですか?

  23. 23

    Javaでオブジェクトメソッドを使用するにはどうすればよいですか?

  24. 24

    親クラスのメソッド内からオブジェクトの呼び出しインスタンスを取得するにはどうすればよいですか?

  25. 25

    メソッドの親オブジェクトを取得するにはどうすればよいですか?

  26. 26

    オブジェクトの名前の文字列がある場合、オブジェクトのメソッドを呼び出すにはどうすればよいですか?

  27. 27

    オブジェクト内の関数を呼び出すにはどうすればよいですか

  28. 28

    インターフェイスを実装するクラスにあるメソッドを、そのインターフェイスのタイプのオブジェクトで呼び出すにはどうすればよいですか?

  29. 29

    トレイトがオブジェクトセーフでない場合、2つの結果のいずれかでトレイトメソッドを呼び出すにはどうすればよいですか?

ホットタグ

アーカイブ