getDeclaredMethodは例外をスローします

落ち着いたブラウナー

rpcを介して通信するクライアントサーバーアプリを作成したいと思います。このコードは、パラメーターのない関数で非常にうまく機能します。ただし、単一のパラメーターを使用して関数を呼び出そうとすると(それ以上はサポートされていません)、「NoSuchMethodException」が発生します。

重要な部分は次のとおりです。

呼び出したい関数:(rpcserver.CarPark.in)

public boolean in(int num) {
    if(!closed) {
        if (num <= (maxLots - curLots)) {
            curLots += num;
            return true;
        }
    }
    return false;
}    

public boolean in() {
    if(!closed) {
        if (curLots < maxLots) {
            curLots += 1;
            return true;
        }
    }
    return false;
}    

関数を呼び出すコードは次のとおりです(関数名にはprocedure [0]を使用し、パラメーターには[1]を使用します。

    if(procedure.length == 1) {
        try {
            Method method = CarPark.class.getDeclaredMethod((String)procedure[0]);
            return method.invoke(park);  
        } catch (Exception e) {
            throw new Exception("Server couldn't find a fitting procedure.");                
        }
    } else {
        // length of 2, more isn't possible
        try {
            System.out.println((String)procedure[0] + ", " +  procedure[1].getClass());
            Method method = CarPark.class.getDeclaredMethod((String)procedure[0], procedure[1].getClass());
            return method.invoke(park,procedure[1]);  
        } catch (Exception e) {
            throw new Exception("Server couldn't find a fitting procedure." + e);                
        }
    }

不思議なことに、関数はこれを返します:java.lang.NoSuchMethodException: rpcserver.CarPark.in(java.lang.Integer)しかし、printlnコマンドは私にこれを与えます:in, class java.lang.Integer

では、なぜパラメーターなしでプロシージャーを呼び出すことができるのに、パラメーターに問題があるのでしょうか。

ありがとう

Ismail Badawi |

問題は、CarPark.in取得しようとしているバージョンがプリミティブ整数getDeclaredMethodを取りjava.lang.Integer、同じものではない、をとるバージョンを探していることです。int.classまたはInteger.TYPE渡すとgetDeclaredMethod、メソッドを正しく見つけることができることがわかります。

完全なコードを見ずに、自分に合った解決策を提案するのは少し難しいことではありませんが、プリミティブタイプとそれに相当するボックス化されたタイプの違いに留意し、自動ボックス化に注意してください

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

leiningennewは例外をスローします

分類Dev

UseHangfireServerは例外をスローします

分類Dev

IconButtonは例外をスローします

分類Dev

MuleWSProxyServiceは例外をスローします

分類Dev

Appiumテストケースは例外をスローします

分類Dev

nullを出力しますが、例外はスローしません

分類Dev

HtmlUnitは構成を無視し、例外をスローします

分類Dev

NSURLはmailtoを使用してnil例外をスローします:

分類Dev

プログラムは常に例外をスローします

分類Dev

MS sql 2008 trycatchはまだ例外をスローします

分類Dev

ヌルまたは例外をスローします

分類Dev

Powershellはデータで例外をスローします

分類Dev

Optional <>が存在する場合は例外をスローします

分類Dev

例外を再スローします

分類Dev

GETDATE()が例外をスローします

分類Dev

LayoutInflaterが例外をスローします

分類Dev

JsonObjectgetAsStringが例外をスローします

分類Dev

HashCodeはnullpointer例外をスローします

分類Dev

ピカソは例外をスローします:context == null

分類Dev

Request.Content.ReadAsMultipartAsyncはSystem.IO例外をスローします

分類Dev

setSupportActionBar()はNullpointer例外をスローします

分類Dev

RoundingMode.UNNECESSARYは例外をスローします

分類Dev

ubuntuのPyinstallerは例外PyInstaller.compat.FileNotFoundErrorをスローします

分類Dev

_mm_store_si128は例外をスローします

分類Dev

ReSharper inspectcode.exe2016.3は例外をスローします

分類Dev

Matcher.groupはIndexOutOfBoundsException例外をスローします

分類Dev

CollectionViewメソッド 'referenceSizeForHeaderInSection'は例外をスローします

分類Dev

Flurlは例外をスローします(MoveNext())

分類Dev

getAdapterPosition()は例外をスローします[android]

Related 関連記事

  1. 1

    leiningennewは例外をスローします

  2. 2

    UseHangfireServerは例外をスローします

  3. 3

    IconButtonは例外をスローします

  4. 4

    MuleWSProxyServiceは例外をスローします

  5. 5

    Appiumテストケースは例外をスローします

  6. 6

    nullを出力しますが、例外はスローしません

  7. 7

    HtmlUnitは構成を無視し、例外をスローします

  8. 8

    NSURLはmailtoを使用してnil例外をスローします:

  9. 9

    プログラムは常に例外をスローします

  10. 10

    MS sql 2008 trycatchはまだ例外をスローします

  11. 11

    ヌルまたは例外をスローします

  12. 12

    Powershellはデータで例外をスローします

  13. 13

    Optional <>が存在する場合は例外をスローします

  14. 14

    例外を再スローします

  15. 15

    GETDATE()が例外をスローします

  16. 16

    LayoutInflaterが例外をスローします

  17. 17

    JsonObjectgetAsStringが例外をスローします

  18. 18

    HashCodeはnullpointer例外をスローします

  19. 19

    ピカソは例外をスローします:context == null

  20. 20

    Request.Content.ReadAsMultipartAsyncはSystem.IO例外をスローします

  21. 21

    setSupportActionBar()はNullpointer例外をスローします

  22. 22

    RoundingMode.UNNECESSARYは例外をスローします

  23. 23

    ubuntuのPyinstallerは例外PyInstaller.compat.FileNotFoundErrorをスローします

  24. 24

    _mm_store_si128は例外をスローします

  25. 25

    ReSharper inspectcode.exe2016.3は例外をスローします

  26. 26

    Matcher.groupはIndexOutOfBoundsException例外をスローします

  27. 27

    CollectionViewメソッド 'referenceSizeForHeaderInSection'は例外をスローします

  28. 28

    Flurlは例外をスローします(MoveNext())

  29. 29

    getAdapterPosition()は例外をスローします[android]

ホットタグ

アーカイブ