3

シナリオは、オブジェクトをメソッドのパラメーターとして渡し、メソッド内でそのオブジェクトの型に基づいて操作を実行したいというものです。

サンプルコードは次のとおりです。

method(Object object){

//if object== String type print string   
 }
4

9 に答える 9

6

instanceof キーワードを使用します。Java プログラミング言語のキーワード instanceOf は、オブジェクトが指定されたタイプであるかどうかをテストし、それに応じて値を返すために使用されるブール演算子です。

if(object instanceof String) {

}
于 2013-03-13T04:52:41.663 に答える
4

試す

if (object.getClass().getName().equals("Class1Name"))
    //do something.

getClass代わりの利点はinstanceof、コンパイル時にクラスの型を知る必要がないことです。

于 2013-03-13T04:53:55.073 に答える
1

methodパラメータに応じて異なる反応をしたい場合は、オーバーロードする必要があります

public void method(String s) {
}

public void method(Integer i) {

}

public void method(SomeClass o) {

}
于 2013-03-13T05:11:05.830 に答える
1

javaでinstanceof演算子を使用できます。

以下のリンクを確認してください

例については、ここをクリックしてください

于 2013-03-13T04:57:34.903 に答える
0

代わりにgetclass()メソッドを使用できると思います。

于 2013-03-13T05:13:33.723 に答える
0

instanceof 演算子を使用して型をチェックし、適切にキャストします

于 2013-03-13T04:53:08.777 に答える
0

instanceofキーワードを使用できます 。ただし、事前に注意してください。Objectこれは、どのような種類のパスを通過するかがまったくわからない場合を除き、通常は良い方法ではありません。

于 2013-03-13T04:53:53.983 に答える
0

良い習慣は、ポリモーフィズムを使用することです..

これがどのchildTypeであるかを表すプロパティを持つ親クラスがある場合、

class Parent { string type; public string getType() { return type; } }

class ChildA extends Parent { ChildA() { type = "ChildA"; }

class ChildB extends Parent { ChildB() { type = "ChildB"; }

public void function (Parent p)
{
    if (p.getType() == "ChildA")
    {
        // A
    }
    else if (p.getType == "ChildB")
    {
        // B
    }
}
于 2013-03-13T05:00:08.050 に答える
0

何かを印刷するだけの場合は、異なるタイプのオブジェクトごとにオーバーライドされる toString() メソッドを使用できます;)

次のコードのようなものを使用して、各クラスに異なる toString() メソッドを持たせるだけです。

method(Object object){
    // ... object.toString();
}
于 2013-03-13T05:01:04.613 に答える