如何在java中将字符串与对象实例相关联

时间:2013-03-08 17:55:32

标签: java instanceof

我有一个代码块,我在其中反序列化传入的数据,然后我必须将其转换为一些已知的类对象,因此我做了类似的事情:

   if (object instanceof MyClass) {
         Myclass data = (MyClass)object;  
   }

它工作正常,但现在我的情况可能有不同类型的calsses。那么有没有办法根据"String"进行比较:

   if (object instanceof "String") {
         String data = (String)object;  
   }

问题是在这种情况下,用户将指定类对象名称,那么我该怎么做呢? 我应该强制用户启动一个虚拟对象,然后传递给我的方法,还是有办法用String初始化null对象,有什么想法吗?

4 个答案:

答案 0 :(得分:5)

它很臭,很丑,我不喜欢它,但你可以使用Class#forName()Class#isInstance(Object)

if (Class.forName("java.lang.String").isInstance(object)) {
     String data = (String)object;  
}
但是,你仍然会遇到演员阵容的问题。 Class#cast()只有Class<T>才能获得编译时类型安全性 - 但您只能从Class<?>获得Class#forName()

答案 1 :(得分:2)

您可以使用Class#forName()Class#isInstance(Object)。完成这个

下载示例代码

FileDemo dd = new FileDemo();
Class object = Class.forName("com.FileDemo");

if(object.isInstance(object)){
    //do your conversion
}

答案 2 :(得分:1)

您可以随时执行此操作:

if(object instanceof MyClass)  
{
             Myclass data = (MyClass)object;  
} else  
{  
       String data = object.toString();
}  

默认情况下,java中的每个Object都有一个可以调用的toString函数。无需转换为String

答案 3 :(得分:0)

请在此处查看“forname”方法:http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html