java的class和object_Java中Class/Object/T的关系
Object 對象
Object是Java中的基類,大部分的對象都是繼承于這個(gè)類。
public class Object {
....
public native int hashCode();
public boolean equals(Object obj) {
...
}
public String toString() {
...
}
}
以上是其定義,可以看出來其定義了一些基礎(chǔ)方法,比如hashCode等等。
Class類的類
「Class類」是其本身也是一個(gè)類,且不可以繼承,它指向的是「實(shí)例的定義」是「類的類」
注意本文中「Class類」和「Class」意思不同,前者指的是『public final class Class』,后者值得是『類這個(gè)概念』
public final class Class implements java.io.Serializable,
java.lang.reflect.GenericDeclaration,
java.lang.reflect.Type,
java.lang.reflect.AnnotatedElement {
......
}
可以看得出其本身實(shí)現(xiàn)了一些接口,主要是反射中的。
T 模板
T是代表模板,可以「代表任何Object」,其主要是放在各種單書名號中,一般是類名或者問號。
問號代表不確定
名字代表確定
T則代表任意一個(gè)「繼承于Object的類」
T控制返回值
當(dāng)要使用T時(shí)需要通過「中括號T」來聲明,其相當(dāng)于finally或者static之類的限定符號
public finally static T method(Class clazz) {
return T;
}
除去方法的限定詞
T method(Class clazz);該方法是一個(gè)返回值為T,入?yún)槿我狻窩lass類」的方法
返回值根據(jù)傳入的對象確定
返回的是「Class類」的一個(gè)實(shí)例化Object。
控制容器內(nèi)容public static List select(T object);
根據(jù)輸入?yún)?shù)T可以保證返回的List對象中全部都為T的實(shí)例。
T用于強(qiáng)行轉(zhuǎn)換
由于T本身作為一個(gè)模板,所以也可以用于強(qiáng)行類型轉(zhuǎn)換
List list = (List) object;
resultList.add((T) BeanMapperUtil.objConvert(tempDO,objectBO.getClass()));
Class/Class類/Object/T的邏輯關(guān)系
如上總結(jié)
「Class類」是一個(gè)「Class」和Object同一級別,且不可以被繼承
Object代表對象,是實(shí)例,實(shí)例就是某個(gè)「Class」的new實(shí)例化
T則是代表任意一個(gè)繼承于Object的「Class」
看上去還是很晦澀,所以就拿String進(jìn)行舉例
class SomeObject extends Object {
T method(Class clazz);
}
SomeObject some = new SomeObject();
Class clazz = some.getClass();
SomeObject someT = some.method(clazz);它的「Class」是「someObject」,它的實(shí)例some是一個(gè)「Object」
「class SomeObject extends Object」可以被一個(gè)「Class類」的實(shí)例clazz指向
當(dāng)method被調(diào)用,輸入了clazz,返回值就是「someObject」,那么T就是「someObject」這段字符
媽蛋 還是很晦澀。。。。。我也不知道該怎么講了。。。總之,你感覺感覺。。。
關(guān)于「Class」這個(gè)概念,就是類這個(gè)概念如何產(chǎn)生的,可以看另外一個(gè)文章面向?qū)ο笳Z言的吹逼
總結(jié)
以上是生活随笔為你收集整理的java的class和object_Java中Class/Object/T的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于毕业的一些事情
- 下一篇: Java反梯形图案_梯形法求定积分(一)