这种情况是我将一个对象作为参数传递给一个方法,并且我想根据该方法中该对象的类型执行操作。有什么方法可以知道对象的类型?
示例代码:
method(Object object){
//if object== String type print string
}
这种情况是我将一个对象作为参数传递给一个方法,并且我想根据该方法中该对象的类型执行操作。有什么方法可以知道对象的类型?
示例代码:
method(Object object){
//if object== String type print string
}
尝试
if (object.getClass().getName().equals("Class1Name"))
//do something.
的getClass
代替instanceof
的好处是,你不需要知道在编译时类的类型。
酷,所以你可以做一个方法,使对象和类名字符串具有更大的灵活性! – npace 2013-03-13 13:45:45
使用的instanceof关键字。 java编程语言中的关键字instanceOf是一个布尔运算符,用于测试对象是否为指定类型并相应返回值。
if(object instanceof String) {
}
谢谢,我曾尝试过这种方法,但在我的情况下,会发生很多比较,我喜欢避免它。我的意思是,如果我有20个对象类型,那么我必须检查所有这些。任何其他方式直接知道传入对象的类型。 – Abx 2013-03-13 04:59:26
使用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();
}
如果你想method
根据参数来产生不同的反应,你应该重载它
public void method(String s) {
}
public void method(Integer i) {
}
public void method(SomeClass o) {
}
我认为你可以使用getclass()方法。
如果您想检查手头的对象类型,可以使用“instanceOf”关键字。 – 2013-03-13 05:20:49