2013-03-13 62 views
3

这种情况是我将一个对象作为参数传递给一个方法,并且我想根据该方法中该对象的类型执行操作。有什么方法可以知道对象的类型?

示例代码:

method(Object object){ 

//if object== String type print string 
} 
+0

如果您想检查手头的对象类型,可以使用“instanceOf”关键字。 – 2013-03-13 05:20:49

回答

4

尝试

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

getClass代替instanceof的好处是,你不需要知道在编译时类的类型。

+0

酷,所以你可以做一个方法,使对象和类名字符串具有更大的灵活性! – npace 2013-03-13 13:45:45

6

使用的instanceof关键字。 java编程语言中的关键字instanceOf是一个布尔运算符,用于测试对象是否为指定类型并相应返回值。

if(object instanceof String) { 

} 
+0

谢谢,我曾尝试过这种方法,但在我的情况下,会发生很多比较,我喜欢避免它。我的意思是,如果我有20个对象类型,那么我必须检查所有这些。任何其他方式直接知道传入对象的类型。 – Abx 2013-03-13 04:59:26

0

使用instanceof运算符来检查的种类和投适当

0

可以使用instanceof关键字。但是,要预先警告;这通常不是一个好的做法,除非你绝对不确定你会通过什么样的Object

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 
    } 
} 
0

如果你打算打印一些东西,你可以使用toString()方法,该方法将覆盖每个不同类型的对象;)

只是使用类似的代码波纹管,让每个类都有不同的toString()方法:

method(Object object){ 
    // ... object.toString(); 
} 
1

如果你想method根据参数来产生不同的反应,你应该重载它

public void method(String s) { 
} 

public void method(Integer i) { 

} 

public void method(SomeClass o) { 

} 
0

我认为你可以使用getclass()方法。

相关问题