导航:首页 > 编程语言 > 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相关的资料

热点内容
来拿钱app怎么样 浏览:708
数控编程的g70是什么意思 浏览:728
两个插网线怎么传数据 浏览:213
外圆循环加工如何编程 浏览:272
数据库图标是个小象是哪个数据库 浏览:278
maxthon文件夹 浏览:954
如何编程对万千百十个数字的筛选 浏览:335
apache配置文件详解 浏览:822
word文件后面出现sjz3 浏览:794
简单照相机安卓版 浏览:999
美国恐怖故事在哪个app 浏览:532
linux共享文件拒绝访问 浏览:26
推特app的语言设置在哪里 浏览:960
PDF文件上传网络后变成乱码 浏览:222
编程时在什么情况下有include 浏览:849
extjs复制对象 浏览:84
lumion7灯光教程 浏览:300
如何设计word背景 浏览:669
wcf怎么接受post数据库 浏览:243
会计借贷账目表怎么看数据 浏览:728

友情链接