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」這個概念,就是類這個概念如何產生的,可以看另外一個文章面向對象語言的吹逼
總結
以上是生活随笔為你收集整理的java的class和object_Java中Class/Object/T的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于毕业的一些事情
- 下一篇: sikuli python java_自