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

Spa*_*ker 2 java instanceof

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

   if (object instanceof MyClass) {
         Myclass data = (MyClass)object;  
   }
Run Code Online (Sandbox Code Playgroud)

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

   if (object instanceof "String") {
         String data = (String)object;  
   }
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*all 5

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

if (Class.forName("java.lang.String").isInstance(object)) {
     String data = (String)object;  
}
Run Code Online (Sandbox Code Playgroud)

不过,你仍然会遇到演员阵容的问题.Class#cast()只有让你编译时类型安全,当你有一个Class<T>-但你只能得到一个Class<?>Class#forName().