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

您可以在 java中使用instanceof运算符。

请检查以下链接

单击此处查看示例

于 2013-03-13T04:57:34.903 回答
1

如果你想method根据参数做出不同的反应,你应该重载它

public void method(String s) {
}

public void method(Integer i) {

}

public void method(SomeClass o) {

}
于 2013-03-13T05:11:05.830 回答
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 回答
0

我认为您可以改用 getclass() 方法。

于 2013-03-13T05:13:33.723 回答