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

热点内容
计算机程序文件名扩展名为 浏览:982
网络游戏推广策划案 浏览:609
替换所有文件内容的代码 浏览:960
不是常用数据模型有哪些 浏览:426
aspcms版本号 浏览:835
安卓怎么用数据流量下载软件 浏览:553
大众手动空调数据流通道号是多少 浏览:303
手机qq令牌 浏览:737
cg原画上色教程 浏览:993
婚介服务中心app怎么做 浏览:43
日本苹果66g多少钱 浏览:93
个性的文件夹名称 浏览:697
怎么设置文件打开密码 浏览:811
手机版qq客服代码怎么用 浏览:24
fme可以打开哪些文件 浏览:339
好看的qq密码 浏览:293
安卓唯一标识有哪些 浏览:243
win10ime 浏览:271
手机号大数据保护停机是什么意思 浏览:81
两个苹果手机怎么隔空投送app 浏览:903

友情链接