java class

 我来答
新科技17
2022-10-01 · TA获得超过5897个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:74.6万
展开全部
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 ,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+ "\n");         System.out.println("2-----------");         Animal ani1 = creatNew2(Cat.class);         Cat cat1 = (Cat) ani1;         System.out.println(cat1.name + " is " + cat1.type + "\n");         System.out.println("3-----------");         Object obj = creatNew3(Dog.class);         Dog dog2 = (Dog) obj;         System.out.println(dog1.name + " is " + dog2.type + "\n");         System.out.println("4-----------");         Object obj2 = creatNew4(Cat.class);         Cat cat2 = (Cat) obj2;         System.out.println(cat2.name + " is " + cat2.type + "\n");         System.out.println("5-----------");         Object obj3 = creatNew5(new Cat());         Cat cat3 = (Cat) obj3;         System.out.println(cat3.name + " is " + cat3.type + "\n");     }     /**      * 此方法是一个非泛型类中的泛型方法,参数为Class 类型,可以传入任何类,但是Class 将参数在函数内部的类型固定为 T类,使用clazz.newInstance(),返回的类型也为固定的 T 类型。      * 如: 传入Dog.class, 函数中的 T 固定为Dog.class,函数返回的是Dog类型,不需要强制转换为Dog类型      * (当然,函数返回类型也可以是Object类型,但是没必要)      */     public static   T creatNew1(Class  clazz) throws IllegalAccessException, InstantiationException {         System.out.println(clazz);//打印具体传入的类型。         return clazz.newInstance();     }     /**      * 此方法参数是Class ,只能传入Animal及其子类的类型,函数返回类型只能声明为Animal或Object类型,      * 如:传入Cat.class,函数返回一个Animal的子类对象,需将此子类对象强制转换为具体的子类(即Cat类)。      */     public static Animal creatNew2(Class  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"; } /**  * 这些方法,传的参数声明不同,其返回的声明也必然要随之不同。  */
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式