java从对象的字符串表示确定类
考虑到我得到了一个数组^ {< CD1>}和一个^ {< CD2>}的字符串表示形式。我怎样才能得到这个Object
属于哪个Class
我想过这种方法,但不知道如何实现:
Iterating over Class array and then getting all instances of that class.Then convert each instance to its String representation and then check if it equals given String.
我面临的问题是,我如何获得所有的Instances
?
我们可以使用getInstance()
如果所有的都是Singleton
类,但是如果不是呢
如果我有任何误解,请澄清我的错误
import java.util.*;
public class Class_instance {
public static void main(String args[]){
List<Class> class_list = new ArrayList<Class>();
Test_class x = new Test_class();
Test y = new Test();
class_list.add(x.getClass());
class_list.add(y.getClass());
String ex = x.toString();
}
}
如何知道ex
在这里代表什么类
# 1 楼答案
简短的回答——不,这行不通
toString()
方法返回对象的textual representation,但不能保证这将包括类名。例如,对于String
s,toString()
返回字符串的值。尤其是任何文本表示都可能来自字符串如果您有一个特定的类列表(它们有可识别的值),您可以编写正则表达式来识别它们的
toString
值直接使用
Class
对象更有可能是您想要的:尽管如此,也许这就足够了
# 2 楼答案
如果你拥有你想要搜索的类,你可以通过创建一个新类(我称之为
MyObject
)来跟踪它们的实例,这个类有一个静态字段,你可以在创建该类的新对象时填充这个字段,然后扩展你想要跟踪这个新类的类然后你可以这样使用它:
我的
Dog
类(以及类似的Cat
类)如下所示:请注意
toString()
不会返回对象的唯一表示(如我的示例所示),除非您对该对象的toString()
拥有完全的控制权,并且您自己确保了这一点# 3 楼答案
如前所述,我们需要知道字符串表示法的含义
在大多数应用程序(AFAIK)中,instanceof应该足以检查对象是否属于某个类。另一种方法是定义覆盖toString方法的方法
如果给定字符串sample=“霍格沃茨城堡”;您可以使用以下选项: