導航:首頁 > 編程語言 > 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相關的資料

熱點內容
驅動程序順序安裝腳本 瀏覽:665
word文件里怎樣查重 瀏覽:219
mx5系統基帶版本 瀏覽:184
ntlea全域通win10 瀏覽:171
qq怎麼查看別人的收藏 瀏覽:135
地震三參數matlab程序 瀏覽:57
怎樣給優盤文件加密軟體 瀏覽:7
收拾文件有哪些小妙招 瀏覽:431
pdf文件去底網 瀏覽:253
win10重裝系統需要格式化c盤嗎 瀏覽:424
路由器trx文件 瀏覽:655
淘寶店鋪數據包怎麼做 瀏覽:195
win10鍵盤黏連 瀏覽:332
json如何生成表格 瀏覽:323
怎麼修復sql資料庫表 瀏覽:40
微信微博差別 瀏覽:163
簽到積分換禮品app 瀏覽:812
mfc最近打開文件 瀏覽:672
app埋點平台都有哪些app 瀏覽:314
瑞斯康達網路管理界面 瀏覽:254

友情鏈接