java,class
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java class是什么,让我们一起了解一下?
CLASS是在网络工程中的一种协议,在java中有两种对象:实例对象和Class对象。每个类运行时的类型信息就是用Class对象表示的,它包含了与类有关的信息,其实实例对象就是通过Class对象来创建的。
那我们如何获得Class对象?
1、Class.forName(“类的全限定名”)
2、实例对象.getClass()
3、类名.class (类字面常量)
实战操作:如何获得一个实例的类型类?
Object类中包含一个方法名叫getClass,利用这个方法就可以获得一个实例的类型类。类型类指的是代表一个类型的类,因为一切皆是对象,类型也不例外,在Java使用类型类来表示一个类型,所有的类型类都是Class类的实例。getClass()会看到返回Class<?>。
JDK中,普通的Class.newInstance()方法的定义返回Object,要将该返回类型强制转换为另一种类型,但是使用泛型的Class<T>,Class.newInstance()方法具有一个特定的返回类型。
代码如下:
public class Main2 { public static void main(String[] args) throws InstantiationException, IllegalAccessException { System.out.println("1-----------"); Dog dog1 = creatNew1(Dog.class); System.out.println(dog1.name + " is " + dog1.type+ ""); System.out.println("2-----------"); Animal ani1 = creatNew2(Cat.class); Cat cat1 = (Cat) ani1; System.out.println(cat1.name + " is " + cat1.type + ""); System.out.println("3-----------"); Object obj = creatNew3(Dog.class); Dog dog2 = (Dog) obj; System.out.println(dog1.name + " is " + dog2.type + ""); System.out.println("4-----------"); Object obj2 = creatNew4(Cat.class); Cat cat2 = (Cat) obj2; System.out.println(cat2.name + " is " + cat2.type + ""); System.out.println("5-----------"); Object obj3 = creatNew5(new Cat()); Cat cat3 = (Cat) obj3; System.out.println(cat3.name + " is " + cat3.type + ""); } /** * 此方法是一个非泛型类中的泛型方法,参数为Class<T>类型,可以传入任何类,但是Class<T>将参数在函数内部的类型固定为 T类,使用clazz.newInstance(),返回的类型也为固定的 T 类型。 * 如: 传入Dog.class, 函数中的 T 固定为Dog.class,函数返回的是Dog类型,不需要强制转换为Dog类型 * (当然,函数返回类型也可以是Object类型,但是没必要) */ public static <T> T creatNew1(Class<T> clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具体传入的类型。 return clazz.newInstance(); } /** * 此方法参数是Class<? extends Animal>,只能传入Animal及其子类的类型,函数返回类型只能声明为Animal或Object类型, * 如:传入Cat.class,函数返回一个Animal的子类对象,需将此子类对象强制转换为具体的子类(即Cat类)。 */ public static Animal creatNew2(Class<? extends Animal> clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具体传入的类型。 return clazz.newInstance(); } /** * 此方法参数是Class,可传入任何类,其返回只能声明为Object类对象。 * 如:传入Dog.class, 返回的是Object类型的对象,需强制转换为Dog类型的对象。 */ public static Object creatNew3(Class clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具体传入的类型。 return clazz.newInstance(); } /** * 传入参数Class<?> 和 上一个方法传入 Class 的区别还不是很清楚,其返回只能声明为Object类对象。 * 如:Cat.class, 返回的是Object类型的对象,需强制转换为Cat类型的对象。 */ public static Object creatNew4(Class<?> clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具体传入的类型。 return clazz.newInstance(); } /** * 传入Object类型的对象,返回也声明为Object类型。 */ public static Object creatNew5(Object object) { System.out.println(object.getClass());//打印具体传入的类型。 return object; }}abstract class Animal { public String type = "type = animal ";}class Dog extends Animal { public String name = "name = gou";}class Cat extends Animal { public String name = "name = mao";}/** * 这些方法,传的参数声明不同,其返回的声明也必然要随之不同。 */
-
qq怎么恢复被退出的群
21世纪是互联网信息时代,互联网聊天软件发挥重要信息沟通作用,一些我们不需要的聊天群会选择退出,也会由于不小心或者别的原因退出了qq群,那么退出的聊天群该怎么恢复呢?退出的qq群只有群主能进行恢复操作,管理员不能恢复,而且只能恢复被群主或管理员删除的群成员。而...
-
汽车均衡器怎么调音质好
1、首先打开播放器,播放一首歌,选择均衡器。2、就可以进行相应的设置,在选择自定义的时候。3、需要了解音乐均衡器的各个频段所增益的乐器及调节效果,20HZ-40HZ,在这一段中提升能够使音乐变得强而有力。4、40HZ-150HZ,是声音的基础部分,声音丰满柔和。...
-
苹果手机相册怎么上锁,苹果手机相册怎样上锁
1、在手机上下载腾讯手机管家APP,下载完毕点击打开。2、进入手机管家后,选择相册管理。3、点击加密相册并进入。4、第一次进入加密相册会要设置一个个人密码,或者用户可以通过指纹识别进入相册。5、输入密码后,密码如果正确,相册会自动打开。6、进入相册后,点击添加,...
-
黑色背景拍照窍门详解
1、调整拍摄角度,寻找背景:既然是拍摄黑背景,在拍摄前我们尽量选择深色的背景,这样也就更加容易达到效果。不过深色不一定要是纯黑色,只要颜色较为深沉,偏向暗色调的均可。拍摄前多多观察,寻找不同的拍摄角度,以找到有反差的深色作为背景。要多尝试不同的角度,直至主体...