シナリオは、オブジェクトをメソッドのパラメーターとして渡し、メソッド内でそのオブジェクトの型に基づいて操作を実行したいというものです。
サンプルコードは次のとおりです。
method(Object object){
//if object== String type print string
}
instanceof キーワードを使用します。Java プログラミング言語のキーワード instanceOf は、オブジェクトが指定されたタイプであるかどうかをテストし、それに応じて値を返すために使用されるブール演算子です。
if(object instanceof String) {
}
試す
if (object.getClass().getName().equals("Class1Name"))
//do something.
getClass
代わりの利点はinstanceof
、コンパイル時にクラスの型を知る必要がないことです。
method
パラメータに応じて異なる反応をしたい場合は、オーバーロードする必要があります
public void method(String s) {
}
public void method(Integer i) {
}
public void method(SomeClass o) {
}
代わりにgetclass()メソッドを使用できると思います。
instanceof 演算子を使用して型をチェックし、適切にキャストします
instanceof
キーワードを使用できます 。ただし、事前に注意してください。Object
これは、どのような種類のパスを通過するかがまったくわからない場合を除き、通常は良い方法ではありません。
良い習慣は、ポリモーフィズムを使用することです..
これがどの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
}
}
何かを印刷するだけの場合は、異なるタイプのオブジェクトごとにオーバーライドされる toString() メソッドを使用できます;)
次のコードのようなものを使用して、各クラスに異なる toString() メソッドを持たせるだけです。
method(Object object){
// ... object.toString();
}