Java 有没有办法知道物体的类型?
这种情况是,我将对象作为方法中的参数传递,并且希望根据方法中该对象的类型执行操作 示例代码是:Java 有没有办法知道物体的类型?,java,android,Java,Android,这种情况是,我将对象作为方法中的参数传递,并且希望根据方法中该对象的类型执行操作 示例代码是: method(Object object){ //if object== String type print string } 使用instanceof关键字。java编程语言中的关键字instanceOf是一个布尔运算符,用于测试对象是否为指定类型,并相应地返回值 if(object instanceof String) { } 使用instanceof运算符检查类型并进行适当的强制
method(Object object){
//if object== String type print string
}
使用instanceof关键字。java编程语言中的关键字instanceOf是一个布尔运算符,用于测试对象是否为指定类型,并相应地返回值
if(object instanceof String) {
}
使用instanceof运算符检查类型并进行适当的强制转换您可以使用关键字。不过,要事先得到警告;这通常不是一个好的做法,除非你完全不确定你将要通过什么类型的
对象。试试看
if (object.getClass().getName().equals("Class1Name"))
//do something.
用getClass
代替instanceof
的优点是,您不需要在编译时知道类的类型。您可以在java中使用instanceof操作符
请检查下面的链接
好的做法是使用多态性
其中您有一个父类,该父类具有表示此子类型的属性
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()方法:
如果希望方法
根据参数做出不同的反应,则应重载该方法
public void method(String s) {
}
public void method(Integer i) {
}
public void method(SomeClass o) {
}
我想你可以改用getclass()方法。谢谢,我以前尝试过这个方法,但在我的例子中,会发生很多比较,我想避免这种情况。我的意思是,如果我有20种对象类型,那么我必须检查所有的对象类型。直接知道传入对象类型的任何其他方法。如果您想检查手头上的对象类型,可以使用“instanceOf”关键字。酷,这样您就可以使同时获取对象和类名字符串的方法具有更大的灵活性!
public void method(String s) {
}
public void method(Integer i) {
}
public void method(SomeClass o) {
}