<强> Java中类类的作用与深入理解强>
,在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行。而保存这些信息的类称为类。可能容易产生混淆,容易想到类。不过二者没什么关系,类不过是描述类的一个关键字。而班却是保存着运行时信息的类。
,,,,,,它能做什么?类类可以帮助我们在程序运行时分析类,说白了就是获取类中的值。可能瞬间就想到了反射,没错!类一般就是和反射配套使用的,因为我们向类提供一个类或一个类的类名,类就可以提供我们很多信息,比如属性/方法/修饰符/构造器/类名等等。然后我们就可以进一步进行反射。不过,还是先来简单了解下类类的内容和使用方式吧!
,,,,,,,我们通常用以下方法来获取类对象:
字符串str=新的字符串(); 类cl=str.getClass ();
,,,,,,,因为这个类包含太多信息,所以我们可以通过它来获得具体一个类的域/方法和构造器。下面列举一些常用的方法:
公共静态void main (String [] args){抛出异常//以String.class为例 字符串str=新的字符串(); 类cl=str.getClass ();/* * *获取包名+类名& lt; br> *以 */cl.getName ();/* * *只获取类名,字符串 */cl.getSimpleName ();/* * *获取数组的类对象& lt; br> *因为所有的Java类都继承自对象,数组也一样。所以数组本身也是个类,得到数组的类自然也可以转回数组。 */cl.getComponentType ();/* * *返回构造器数组,包括超类的公有成员。 */cl.getConstructors ();/* * *返回方法数组,包括超类的公有成员。 */cl.getMethods ();/* * *返回域数组,包括超类的公有成员。 */cl.getFields ();/* * *返回全部构造器数组,无论是公共/私人还是保护,不包括超类的成员。 */cl.getDeclaredConstructors ();/* * *返回全部域数组,无论是公共/私人还是保护,不包括超类的成员。 */cl.getDeclaredFields ();/* * *返回全部方法数组,无论是公共/私人还是保护,不包括超类的成员。 */cl.getDeclaredMethods ();/* * *获取类前的修饰符 */cl.getModifiers (); } >之前,,,,,,,我们可以通过一个类来获取类对象,进而获取此类的信息。也可以通过全类名来获取类对象。
类cl=forname(“以”);,,,,,,,有了这个类的类对象,我们就可以创建这个类的对象。最方便、快速的方法是调用newInstance()。默认情况下,它默认调用无参构造来返回一个对象。
字符串str=(字符串)(forname(“以”).newInstance ()); >之前,,,,,,,以下是用构造函数通过获取构造器来创建对象:
//调用无参的私有构造函数 构造函数c1=forname(“以”) .getDeclaredConstructor (); c1.setAccessible(真正的); 字符串str1=(字符串)c1.newInstance ();//调用有参的私有构造函数 构造函数c2=forname(“以”) .getDeclaredConstructor(新类[]{字符串。类}); c2.setAccessible(真正的); 字符串str2=(字符串)c2.newInstance (“hello”); >之前,,,,,,,类不是太难,因为它就是个信息类。在运行时跟踪类,掌握类的全部信息。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
Java中类类的作用与深入理解