導航:首頁 > 編程語言 > javanewthrowable

javanewthrowable

發布時間:2023-08-20 04:03:08

java運行一個方法時如何得到該個對象的名字(不是類的名字).

可以通過StackTrace從棧頂往下倒


Stringclsname="ClassName";
StackTraceElementstack[]=(newThrowable()).getStackTrace();
intix=0;
while(ix<stack.length){
StackTraceElementframe=stack[ix];
Stringcname=frame.getClassName();
if(cname.equals(clsname)){
break;
}
ix++;
}

while(ix<stack.length){
StackTraceElementframe=stack[ix];
Stringcname=frame.getClassName();
if(!cname.equals(clsname)){
System.out.println("類名:"+cname);
System.out.println("方法名:"+frame.getMethodName());
}
ix++;
}


㈡ java如何獲取內部靜態類變數

靜態方法不與特定實例關聯,不能引用this,要得到當前類名,沒有直接的辦法。
通過查資料和試驗,可以用下面幾種方式:
public static void testGetClassName()
{
// 方法1:通過SecurityManager的保護方法getClassContext()
String clazzName = new SecurityManager()
{ public String getClassName()
{
return getClassContext()[1].getName();
}
}.getClassName();
System.out.println(clazzName);
// 方法2:通過Throwable的方法getStackTrace()
String clazzName2 = new Throwable().getStackTrace()[1].getClassName();
System.out.println(clazzName2);
// 方法3:通過分析匿名類名稱()
String clazzName3 = new Object() {
public String getClassName()
{
String clazzName = this.getClass().getName();
return clazzName.substring(0, clazzName.lastIndexOf('$'));
}
}.getClassName();
System.out.println(clazzName3);
}
分別調用10萬次,
方法1:219ms
方法2:953ms
方法3:31ms

㈢ Java怎麼獲取當前跟蹤的堆棧

解決方法 1:
您可以使用Thread.currentThread().getStackTrace()
返回的數組的 StackTraceElement s 表示程序的當前堆棧跟蹤。

解決方法 2:
Thread.currentThread().getStackTrace();

如果你不版在乎堆棧的第一個元素是什麼權。
new Throwable().getStackTrace();

會有一個定義的位置,您當前方法的問題。
解決方法 3:
愚蠢是我,Thread.currentThread().getStackTrace();
解決方法 4:
try {
}
catch(Exception e) {
StackTraceElement[] traceElements = e.getStackTrace();
//...
}


Thread.currentThread().getStackTrace()

㈣ Java中怎樣得到當前類名

this.getClass().getSimpleName()

㈤ 什麼情況下,JAVA中執行代碼出異常時不經過Catch而直接跳入finally

有一種可能會出現沒有catch異常的情況:當拋出的不是Exception及其子類時,catch(Exception e)將無法捕獲該異常。請看如下代碼:
public static void main(String[] args) throws Throwable {

try{
throw new Throwable(){

};
}
catch(Exception e){
System.out.println("err");
}
finally{
System.out.println("finally");
}

}
就會不經catch而到輸出 finally。

有一個測試方法是加入catch(Throwable t)即可發現是否有上述情況,示例如下:
public static void main(String[] args) throws Throwable {

try{
throw new Throwable(){

};
}
catch(Exception e){
System.out.println("err");
}
catch(Throwable t){
System.out.println("t");
}
finally{
System.out.println("finally");
}

}

這就會輸出
t
finally

㈥ java 獲取方法調用者 的參數

區分是調用哪個test是由你調用的時候的參數決定的。
例如:調用時test(1),那麼你調專用的是
test(int i){
new A().getMethod();
}
這個方屬法
如果調用的時候是test("str")調用的就是
test(String i){
new A().getMethod();
}
了。

㈦ java反射無法動態獲取註解

@Action
public void test() throws NoSuchMethodException, SecurityException{
StackTraceElement[] stack = new Throwable().getStackTrace();
Method method = this.getClass().getMethod(stack[0].getMethodName());
for(Annotation an : method.getAnnotations()){
System.out.println(an);
}
}

也可以寫個公共方法來獲取,stack[0]這里專要屬改成stack[1]

閱讀全文

與javanewthrowable相關的資料

熱點內容
任命文件人字多少號 瀏覽:27
如何給桌面的文件自動填寫序號 瀏覽:349
壓縮文件JPG重命名 瀏覽:487
vivox7怎麼隱藏文件 瀏覽:340
官網買蘋果好處 瀏覽:153
直播app源碼如何搭建 瀏覽:31
c盤系統文件包介紹圖片 瀏覽:856
linuxopt主要存哪些文件 瀏覽:924
jsdate天數 瀏覽:930
qq空間怎樣發視頻文件在哪裡找 瀏覽:208
nrf2401收發程序 瀏覽:498
哪個網站看新聞最好 瀏覽:944
找到文件夾並清除linux 瀏覽:82
蘋果app不安全怎麼辦 瀏覽:1000
電腦桌面文件收集軟體推薦 瀏覽:317
桌面的文件夾不能刪除不了怎麼辦 瀏覽:724
什麼是手機溫控文件 瀏覽:840
廣東農信app怎麼更改預留手機號碼 瀏覽:241
cdm打開隱藏文件夾 瀏覽:320
貝殼app房子為什麼偶爾不顯示 瀏覽:4

友情鏈接