1. 程式人生 > >類物件,類名.class與類名.this

類物件,類名.class與類名.this

轉自:http://blog.csdn.net/cto_51/article/details/8962357

1.當在內部類中使用this指的就是內部類的物件, 為了訪問外層類物件,就可以使用外層類名.this來訪問。

2. 在java中,每個class都有一個相應的Class物件,當編寫好一個類,編譯完成後,在生成的.class檔案中,就產生一個Class物件,用來表示這個類的型別資訊。獲得Class例項的三種方式:

1). 利用物件呼叫getClass()方法獲取該物件的Class例項2). 使用Class的靜態方法forName(),用類的名字獲取一個Class例項3). 運用.calss的方式獲取Class例項,對基本資料型別的封裝類,還可以採用.TYPE來獲取對應的基本資料型別的Class例項。

以下是TestClass.java程式碼:

  1. publicclass TestClass {   
  2.     publicstaticvoid main(String[] args) {   
  3.         // 在執行期間,如果我們要產生某個類的物件,java虛擬機器會檢測該型別的Class物件是否已被載入
  4.     <span style="white-space:pre">  </span>// 如果沒有載入,java虛擬機器會根據類的名稱找到.class檔案並載入它。 
  5.         // 當new Point()的時候載入這個類,用forName構造例項的時候也載入該類。 只加載一次 
  6.         System.out.println("before new Point()");   
  7.         new Point();   
  8.         System.out.println("after new Point()");   
  9.         try {   
  10.             Class.forName("Line");   
  11.         } catch (Exception e) {   
  12.             e.printStackTrace();   
  13.         }   
  14.         // 利用物件呼叫getClass()方法獲取該物件的Class例項 
  15.         Point pt = new Point();   
  16.         Class c1 = pt.getClass();   
  17.         System.out.println(c1.getName());                   // 結果:Point 
  18.         // 使用Class的靜態方法forName(),用類的名字獲取一個Class例項 
  19.         try {   
  20.             Class c2 = Class.forName("Point");   
  21.             System.out.println(c2.getName());               // 結果:Point 
  22.             // 一旦某個型別的Class物件已經被載入到記憶體,就可以用它來產生該型別的所有物件。
  23.             Point pp = (Point) c2.newInstance();            // newInstance()呼叫類中預設的構造方法
  24.             pp.output();   
  25.         } catch (Exception e) {   
  26.             e.printStackTrace();   
  27.         }   
  28.         // 運用.class的方式獲取Class例項(類) 
  29.         Class c3 = Point.class;   
  30.         System.out.println(c3.getName());                   // 結果:Point 
  31.         // 運用.calss的方式獲取Class例項(基本型別) 
  32.         Class c4 = int.class;   
  33.         System.out.println(c4.getName());                   // 結果:int 
  34.         // 運用.class的方式獲取Class例項(基本資料型別的封裝類) 
  35.         Class c5 = Integer.TYPE;   
  36.         System.out.println(c5.getName());                   // 結果:int 
  37.         Class c6 = Integer.class;   
  38.         System.out.println(c6.getName());                   // 結果:java.lang.Integer 
  39.     }   
  40. }   
  41. class Point {   
  42.     static {   
  43.         System.out.println("loading point");   
  44.     }   
  45.     void output() {   
  46.         System.out.println("x=" + x + ",y=" + y);   
  47.     }   
  48.     int x, y;   
  49. }   
  50. class Line {   
  51.     static {   
  52.         System.out.println("loading Line");   
  53.     }   
  54. }   

相關推薦

物件.class.this

轉自:http://blog.csdn.net/cto_51/article/details/8962357 1.當在內部類中使用this指的就是內部類的物件, 為了訪問外層類物件,就可以使用外層類名.this來訪問。 2. 在java中,每個class都有一個相

【Java】【反射技術】2個物件除了不一樣的定義部分完全一樣;當給定一個物件轉換成另一個物件

1.需求 有時候,在專案開發時候會遇到,特別是Web專案開發,本地工程有一個類A,web工程根據配置檔案會自動生成另外一個class B,而A和B除了類名不同, 其他諸如成員變數以及get\set方法都是相同的(就像下面的Objec1和Object2兩個類一樣),這時候,就

WPF{ComboBox繫結物件 下拉列顯示的值取到的值}

DisplayMemberPath 是用來顯示下拉列表的值 SelectedValuePath是用來取得選中項的值。ComboBox繫結類物件, 下拉列顯示的值,與取到的值 string.

java將JSON字串轉換為實體物件基於net sf json實現

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++如何實現只能動態分配物件不能定義物件

動態分配類物件:就是使用運算子new來建立一個類的物件,在堆上分配記憶體。 靜態分配類物件:就是A a,由編譯器建立類物件,在棧上分配記憶體。 1)動態分配類物件 把類的建構函式和解構函式設為protected屬性。類物件不能訪問,但是派生類可以繼承,也可以訪問。 同時,建立crea

為什麼基的指標可以指向派生物件但是派生指標不能指向基物件

Derive *bp1; Derive dpp; bp1 = &dpp; bp1->show(); Base bpp; bp1 = &bpp;   //錯誤 假設有個people類是基類,成員有姓名和身份證號,有個派生類學生student,添加了成員

為什麼基指標和引用可以指向派生物件但是反過來不行?

基類指標和引用 BaseClass *pbase = NULL; DerivedClass dclass; pbase = & dclass; 基類指標和引用可以指向派生類物件,但是無法使用不存在於基類只存在於派生類的元素。(所以我們需要虛擬函式和純虛擬函式) 原因是這樣的:

C++中的 靜態成員變數全域性物件單例模式

前段時間要實習一個充值介面,建立了一個類(就叫類A好了),這個類A要和另外3個類進行互動,3個類對類A修改的資料是對其他類可見的。這種情況我想到了3個方法: 1.static 靜態成員,靜態成員為該類的所有例項所共享,3個類中各自建立一個類A的物件,它們對靜態成員的修改對其他類可見。 2.全

python-第一物件閉包迭代器

# def fn(): # print("我叫fn") # fn() # print(fn) # <function fn at 0x0000000001D12E18> # fn() # gn = fn # 函式名可以進行賦值 # print(gn) # gn() # fn =

C#反射執行時建立物件讀取設定屬性值列子。

using System; using System.Reflection; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tas

Java中的介面定義、知識要點如何區分介面

介面的定義為:是一個抽象型別,是抽象方法的集合,介面通常以interface來宣告 與類的區分:類描述物件的屬性和方法,介面則包含類要實現的方法。通俗化理解:類在說“是什麼”,介面在說“有什麼” 介面知識要點: 1、介面中的變數一般用public static final修飾符修

Python學習筆記_物件例項物件

1、self 當例項方法被呼叫時,物件會將自身self作為第一個引數傳入。所以在定義時需要將self寫入,在呼叫時不用寫。 2、公有、私有 Python的屬性和方法預設都是公有的,可以通過 . 訪問到, 通過在屬性名前可以加上雙下劃線可以將其偽私有化,這樣只能通過類的

【無私分享:ASP.NET CORE 專案實戰(第二章)】新增EF上下文物件新增介面、實現以及無處不在的依賴注入(DI)

目錄索引 簡介   上一章,我們介紹了安裝和新建控制器、檢視,這一章我們來建立個數據模型,並且新增介面和實現類。 新增EF上下文物件   按照我們以前的習慣,我們還是新建幾個資料夾   Commons:存放幫助類   Domians:資料模型   Services

JAVA基礎篇 物件封裝 繼承 的抽象思想

封裝 封裝是在一個類中繫結屬性和方法的過程。通過封裝,一個類的內部細節可以被隱藏從外部。它允許類的元素只能通過類提供的介面訪問外部。 資料隱藏 通常情況下,一個類被設計成這樣,它的資料(屬性)只能通過它的類方法訪問,並從直接外部訪問絕緣。這個過程的絕緣一個物件的資料被稱為資料隱藏或資訊隱藏。 例子 在類中,通

.class.this的區別

類名.class我們知道在java中,一個類在被載入的時候虛擬機器就會自動的生成一個這個類的一個Class型別的“類物件”,每個類都對應著一個這樣的類物件,通過這個Class型別的類物件,我們就能夠使用“內省與反射”機制,訪問一個類的資訊,比如:對應類中的方法有哪些,成員域有

“T”必須是具有公共的無參數構造函數的非抽象才能用作泛型型或方法

where AC cli get result 類型 round style use 在創建架構提取公共方法時,發生了這個錯誤 public class BaseDal<T> where T:class { private readon

在定義何時需要重寫Object中equals()方法?

在比較兩個物件時可以使用==和 equals()。==用於比較兩個物件的引用地址是否相等,而equals()方法主要用於比較兩個物件的內容是否相等。和equals()的差別請參見“和equals()有什麼區別?”的解答。 在 Object 中已定義了 equals()方法,但是該方法直接採用

關於如何製作自己的Java第三方以及如何製作自己庫的Javadoc

隨著自己程式設計能力的提升以及參加專案的增多,越來越強烈地感覺到,好多曾經專案中使用過的Java類以及方法, 在正在參加的專案中也需要使用,而如果只是單純地複製,貼上,顯然既不美觀,也會出現很多問題,比如忘記方 法到底是如何實現,返回型

學習python的第九天(內置算法:列表數據元祖數據字典數據型)

定義 sort 排序 [] 區別 ict code true 結果 復制 5.8自我總結 1.列表類型內置算法 1.必須掌握 1.按索引取值(正向取值+反向取值),即可存也可以取 #用於取其中一個值 name = ['yang','wen',