1

私はJavaが初めてですが、オブジェクトのタイプを伝えるJavaのメソッドはありますか?

たとえば、Pythonで次のように入力すると

type(34)それは戻るだろうint

type('abc')戻るだろうstring

私はどこでも探してきましたが、それを行う方法が見つかりません。何か助けはありますか?

どうもありがとう。

4

2 に答える 2

12

instanceof演算子は、実行時の型チェックを行う最も手軽な方法です。

if (someObject instanceof String) {
    // It's a string
}

または、任意のインスタンスで を使用できます。これにより、オブジェクトのタイプのインスタンスgetClassが得られます。Class

Class c = someObject.getClass();

Classインスタンスには、名前のgetName文字列バージョンを取得するために呼び出すことができるメソッド (および他の多くの便利なメソッド) があります。

Classを使用して型名からオブジェクトを取得できます.class。例:

Class stringClass = String.class;

Peter Lawrey がコメントで指摘しているように、これらはすべて、プリミティブではなくオブジェクト参照を扱っていることを前提としています。プリミティブで実行時の型チェックを行う方法はありませんが、オブジェクト参照 (コンパイル時の宣言がどこにある可能性があるかObject) とは異なり、宣言によってプリミティブ型が何であるかを常に知っているため、問題ありません。これが実際に現れるのはオブジェクトタイプだけです。


Java コードで多くの明示的な型チェックを行っていることに気付いた場合は、構造/設計の問題を示している可能性があります。ほとんどの場合、実行時に型をチェックする必要はありません。(もちろん例外もあります。)

于 2012-12-29T17:12:49.240 に答える
0

Basically we can achieve our goal by using the method overriding

   class GetType {
        void printType(byte x) {
            System.out.println(x + " is an byte");
        }
        void printType(int x) {
            System.out.println(x + " is an int");
        }
        void printType(float x) {
            System.out.println(x + " is an float");
        }
        void printType(double x) {
            System.out.println(x + " is an double");
        }
        void printType(char x) {
            System.out.println(x + " is an char");
        }
    } 
    public static void main(String args[]) {
          double doubleVar = 1.5;
          int intVar = 7;
          float floatVar = 1f;

          GetType objType = new GetType();
          objType.printType(doubleVar);
          objType.printType(intVar);
          objType.printType(floatVar);
    }
于 2016-01-21T10:25:17.963 に答える