Java 获取真正的类类型
如果我这样做:Java 获取真正的类类型,java,class,casting,Java,Class,Casting,如果我这样做: String s = "hello"; Class<?> c = s.getClass(); String s=“你好”; c类=s.getClass(); 然后,c实际上是一个类,但是里面有一个字符串。 那么,我如何找回字符串类型呢 因为如果我使用: c.getClass()我显然得到了一个Class类型。因此,Class c将引用String类型的类的对象Class c基本上有一些关于String类的元数据 String s = "hello";
String s = "hello";
Class<?> c = s.getClass();
String s=“你好”;
c类=s.getClass();
然后,c
实际上是一个类
,但是里面有一个字符串
。
那么,我如何找回字符串类型呢
因为如果我使用:
c.getClass()
我显然得到了一个Class
类型。因此,Class c
将引用String类型的类的对象Class c
基本上有一些关于String类的元数据
String s = "hello";
Class<?> c = s.getClass();
String s1 = (String) c.newInstance();
例如:
String s = "hello";
Class<?> c = s.getClass();
System.out.println("Name : "+c.getName());
System.out.println("Simple Name: "+c.getSimpleName());
System.out.println("Canonical Name: "+c.getCanonicalName());
System.out.println("Type Name : "+c.getTypeName());
注意:由于您可以看到不同方法(如getCanonicalName、getCanonicalName等)得到的相同返回值,因此可能并不总是相同的,请参阅我在下面提供的链接
由此可见,类对象上有几种方法可用于获取有关类的元数据信息。请按照查看更多信息。因此,类c
将引用类型为String的类的对象Class c
基本上有一些关于String类的元数据
String s = "hello";
Class<?> c = s.getClass();
String s1 = (String) c.newInstance();
例如:
String s = "hello";
Class<?> c = s.getClass();
System.out.println("Name : "+c.getName());
System.out.println("Simple Name: "+c.getSimpleName());
System.out.println("Canonical Name: "+c.getCanonicalName());
System.out.println("Type Name : "+c.getTypeName());
注意:由于您可以看到不同方法(如getCanonicalName、getCanonicalName等)得到的相同返回值,因此可能并不总是相同的,请参阅我在下面提供的链接
由此可见,类对象上有几种方法可用于获取有关类的元数据信息。请按照获取更多信息。首先:您可以从对象获取类实例,因为类的实例与类相关联(而对象中存在getClass()
方法),但它不起作用,因为类与的特定实例不相关联
第二:要获取类型,您不必关心在类
声明的类型中是否指定了无界通配符,因为泛型在运行时被擦除。
重要的是类
对象本身知道与类
对象关联的类(此处为字符串
)的信息。
例如,您可以编写一个或第二个:
Class<? extends String> c = s.getClass();
Class<?> c = s.getClass();
首先:可以从对象获取类实例,因为类的实例与类相关联(而对象
类中存在getClass()
方法),但它不起作用,因为类与类的特定实例没有关联
第二:要获取类型,您不必关心在类
声明的类型中是否指定了无界通配符,因为泛型在运行时被擦除。
重要的是类
对象本身知道与类
对象关联的类(此处为字符串
)的信息。
例如,您可以编写一个或第二个:
Class<? extends String> c = s.getClass();
Class<?> c = s.getClass();
不,我需要什么类型的信息。实际上我不知道它是一个字符串.getName()
帮助而不是使用.getClass()
谢谢!请注意,Class.newInstance()
今天已被弃用Constructor.newInstance()是推荐的方法。不,我需要知道后面是什么类型的信息。实际上我不知道它是一个字符串.getName()
帮助而不是使用.getClass()
谢谢!请注意,Class.newInstance()
今天已被弃用<代码>构造函数。建议使用newInstance()
。