javalangreflect,javalangreflectinvocation null

本文目錄一覽:

java.lang.reflect.Field 這是幹什麼的?

java.lang.reflect包,主要提供了一些“反射”的類。也就是經常會聽到的反射機制常用到的一些類。

java.lang.reflect.Field主要是用於反射類的字段。

反射經常用於工具類的開發,或中間件的開發。

為什麼會產生java.lang.reflect.invocationtargetexception

InvocationTargetException 是一種包裝由調用方法或構造方法所拋出異常的受查異常。這個異常並不是Eclipse插件開發特有的,而是標準JDK中的,它定義在 java.lang.reflect包下。在進行Java開發的時候很少會接觸到這個異常,不過在進行Eclipse插件開發中則不同,很多API都聲明拋出此類異常,因此必須對此異常進行處理。

例如,我們開發一個方法用來統一處理異常:

private static void handleException(Exception e)

{

MessageDialog.openError(Activator.getDefault().getWorkbench()

.getDisplay().getActiveShell(), “error”, e.getMessage());

e.printStackTrace();

}

我們發現當傳遞來的參數e為InvocationTargetException 的時候彈出的對話框中的消息是空的,查看InvocationTargetException 的源碼得知InvocationTargetException 並沒有覆蓋getMessage方法,所以消息當然是空的了。我們需要調用InvocationTargetException 的getTargetException方法得到要被包裝的異常,這個異常才是真正我們需要的異常。修改代碼如下所示:

private static void handleException(Exception e)

{

String msg = null;

if (e instanceof InvocationTargetException)

{

Throwable targetEx = ((InvocationTargetException) e)

.getTargetException();

if (targetEx != null)

{

msg = targetEx.getMessage();

}

} else

{

msg = e.getMessage();

}

MessageDialog.openError(Activator.getDefault().getWorkbench()

.getDisplay().getActiveShell(), “error”, msg);

e.printStackTrace();

}

java.lang中的Class類,與java.lang.reflect包中的construct、method等有什麼聯繫和區別?

有一些聯繫,談不上區別。他們是獨立的類,各自有自己的功能。

你每定義一個類(產生一個java文件)

系統運行的時候,加載java文件 系統就多了一個類的定義

系統裡面保存類的定義的方式是就是用java.lang.Class

也就是說 任何類都有一個對應的Class對象,

Class clz = String.class ; class靜態字段就是該類的Class對象。

通過Class對象,可以得到construct,method這些具體的類定義的細節。

類的細節就是構造函數,普通函數,靜態函數,字段成員等等,就對應了java.lang.reflect下面的那一堆。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/290762.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 13:13
下一篇 2024-12-24 13:13

相關推薦

  • C# 中 JSON null 不顯示的處理方法

    本文將為大家介紹在 C# 中處理 JSON null 不顯示的解決方法。 一、null 不顯示的問題 在使用 C# 進行 JSON 數據處理的時候,經常會遇到 null 值不顯示的…

    編程 2025-04-27
  • MySQL中NULL和空的區別

    MySQL中,NULL和空(Empty)是兩個不同的概念。雖然看起來好像二者沒有什麼區別,但是在實際使用中,二者是有明顯差異的。本文將從多個方面詳細闡述MySQL中NULL和空的區…

    編程 2025-04-23
  • ifpresent——如何優雅地處理Java中的null值

    一、ifpresent的定義與特點 ifpresent是Java 8中的一個非常實用的函數,可以幫助我們優雅地處理可能為空的對象。具體來說,它可以判斷對象是否為null,如果不為n…

    編程 2025-04-23
  • 深度解析php json_decode null

    一、json_decode null的基礎介紹 json_decode是一個常用的php函數,用來對JSON格式的字符串進行解碼,將json格式的字符串轉化為php的變量,方便ph…

    編程 2025-02-24
  • MySQL中的sum與null

    一、sum函數的使用 sum函數在MySQL中是一個非常常用的函數,它的作用是對一組值進行求和,例如: SELECT SUM(price) FROM orders; 上述代碼將會對…

    編程 2025-02-17
  • SQL不等於null的多方面闡述

    在SQL中,null值經常會導致查詢結果不準確,影響到查詢的準確性和有效性。SQL的不等於null的操作,可以幫助我們更好地處理null值。下面將從多個方面對SQL不等於null進…

    編程 2025-01-21
  • 從多個方面詳細闡述.null

    一、互聯網概念 Null在互聯網中代表空值,是一種在編程語言中常用的概念。 null是一種特殊的數據類型,代表一個不存在的對象或變量,它在實際編程中經常用來代表空值,例如: Str…

    編程 2025-01-04
  • phpmysql字段為null,mysql 字段

    本文目錄一覽: 1、php判斷mysql數據庫是否為NULL,然後根據結果,顯示script內容 2、請問mysql的字段值為null時,該列佔用存儲空間嗎? 3、php插入數據庫…

    編程 2024-12-21
  • MySQL default null詳解

    一、什麼是MySQL default null 默認情況下,MySQL中的列可以設置為默認值。如果在插入新數據時沒有指定值,則會使用設置的默認值。默認值還可以設置為NULL,表示此…

    編程 2024-12-17

發表回復

登錄後才能評論