java的class和object_Java中Class/Object/T的关系

Object 对象

Object是Java中的基类,大部分的对象都是继承于这个类。

public class Object {

....

public native int hashCode();

public boolean equals(Object obj) {

...

}

public String toString() {

...

}

}

以上是其定义,可以看出来其定义了一些基础方法,比如hashCode等等。

Class类的类

「Class类」是其本身也是一个类,且不可以继承,它指向的是「实例的定义」是「类的类」

注意本文中「Class类」和「Class」意思不同,前者指的是『public final class Class』,后者值得是『类这个概念』

public final class Class implements java.io.Serializable,

java.lang.reflect.GenericDeclaration,

java.lang.reflect.Type,

java.lang.reflect.AnnotatedElement {

......

}

可以看得出其本身实现了一些接口,主要是反射中的。

T 模板

T是代表模板,可以「代表任何Object」,其主要是放在各种单书名号中,一般是类名或者问号。

问号代表不确定

名字代表确定

T则代表任意一个「继承于Object的类」

T控制返回值

当要使用T时需要通过「中括号T」来声明,其相当于finally或者static之类的限定符号

public finally static T method(Class clazz) {

return T;

}

除去方法的限定词

T method(Class clazz);该方法是一个返回值为T,入参为任意「Class类」的方法

返回值根据传入的对象确定

返回的是「Class类」的一个实例化Object。

控制容器内容public static List select(T object);

根据输入参数T可以保证返回的List对象中全部都为T的实例。

T用于强行转换

由于T本身作为一个模板,所以也可以用于强行类型转换

List list = (List) object;

resultList.add((T) BeanMapperUtil.objConvert(tempDO,objectBO.getClass()));

Class/Class类/Object/T的逻辑关系

如上总结

「Class类」是一个「Class」和Object同一级别,且不可以被继承

Object代表对象,是实例,实例就是某个「Class」的new实例化

T则是代表任意一个继承于Object的「Class」

看上去还是很晦涩,所以就拿String进行举例

class SomeObject extends Object {

T method(Class clazz);

}

SomeObject some = new SomeObject();

Class clazz = some.getClass();

SomeObject someT = some.method(clazz);它的「Class」是「someObject」,它的实例some是一个「Object」

「class SomeObject extends Object」可以被一个「Class类」的实例clazz指向

当method被调用,输入了clazz,返回值就是「someObject」,那么T就是「someObject」这段字符

妈蛋 还是很晦涩。。。。。我也不知道该怎么讲了。。。总之,你感觉感觉。。。

关于「Class」这个概念,就是类这个概念如何产生的,可以看另外一个文章面向对象语言的吹逼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值