java中用静态方法返回类名

54powerman
最初碰到这个问题,首先想到的是getClass()方法,如下尝试:
public static String getClassName()
{
 String className=null;
 className=this.getClass().getName();//静态方法中不可访问变量 this
 return className;
}
结果失败。
偶然发现有人利用异常处理可以获得,真是另辟蹊径,巧妙的很。
public static String getClassName()
{
 String className=null;
 try {
  throw new Exception();
 } catch (Exception e) {
  StackTraceElement[] element=e.getStackTrace();
  className=element[0].getClassName();
 }
 return className;
}
记录下来备用。 

时间: 2024-10-27 00:26:03

java中用静态方法返回类名的相关文章

java非静态方法可以调用静态变量吗?

问题描述 java非静态方法可以调用静态变量吗? 初学java,看到书上的编纂,可能出现了错误. 第二版(中文版)284页中原话: 问:非静态的方法可以存取静态的变量吗? 回答:当然可以.非静态方法不可以调用该类静态的方法或静态的变量. 实在是头大,网上查询都说非静态方法可以调用静态的方法和变量.但我自己试了一下 class Duck{ private int size; static int duckCount=0; public Duck(){ duckCount++; } } public

java中用静态块生成对象和单例模式生成对象的区别是什么?

问题描述 java中用静态块生成对象和单例模式生成对象的区别是什么? 简单的说就是在使用数据库连接池时 怎么来生成连接池 ,感觉用static静态块生成 或单例模式都能生成对象,但是不知道这两种区别是什么,不知道各位知不知道这两种 方法在jvm底层的区别,提供点使用心得,还有static需不需要考虑并发的问题? 解决方案 1没有区别啊,只是生成实例对象的时间不同而已.前者直接在类加载的时候静态代码库就被执行,相应的对象就会被实例化了. 而单例模式中通常是静态方法中提供获取实例的方法,只有在首次调

java单元测试如何返回void的方法

大家写单元测试时候,一定比较不喜欢测试那些返回void的方法,因为大多数是执行一些动作序列,感觉没法测试,其实,对于这类方法,如果方法的执行是可能发生异常的,(比如方法本身就用throws语句),那么这种方法就算是void返回值,也是可以测试的. 举个例子,以下就是我写的一个为返回void方法进行的单元测试: @Test public void testServeResource() throws Exception { MockWebServer mockWebServer = new Moc

Java访问WebService返回XML数据的方法

  本文实例讲述了Java访问WebService返回XML数据的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

java File.listFiles() 返回值无法操作的问题

问题描述 java File.listFiles() 返回值无法操作的问题 File[] files = myfileFile.listFiles();//**这个返回值无法操作,是怎么回事.** for(File f : files) { System.out.println("1"); if(f.exists()) //这里我的测试文件是存在的,但exists()返回false. { System.out.println("10"); } if(f.canRea

java 中用户名密码验证的代码怎么写?急!!在线等

问题描述 java 中用户名密码验证的代码怎么写?急!!在线等 import java.awt.GridLayout; import java.awt.event.*; import javax.swing.*; import com.sdu.wh.bll.UserQueryBll; import com.sdu.wh.dao.*; import com.sdu.wh.sql.*; public class LoginFrame extends JDialog implements Action

java中getToolkit()返回Toolkit

问题描述 java中getToolkit()返回Toolkit 为什么在一个继承了Frame的类中,Toolkit k = getToolkit()是错的 解决方案 1 确认这个类或父类有这个方法 2 确认返回类型 3 确认有没有重写 4 最后看看这个父类是不是包错了 解决方案二: 试试看 base.getToolkit()

java中用集合写一个简单的登录功能。麻烦大家看一看

问题描述 java中用集合写一个简单的登录功能.麻烦大家看一看 //这是注册的方法 public static void reg(){ Collection id=new ArrayList();//账户 Collection passWord=new ArrayList();//密码 Scanner sc=new Scanner(System.in); System.out.println("请输入账号:"); id.add(sc.next()); System.out.printl

格式化-java中用DecimalFormat怎样把一个数字变成货币样式

问题描述 java中用DecimalFormat怎样把一个数字变成货币样式 DecimalFormat df = new DecimalFormat(); df.setGroupingSize(2);//进行分组, df.setGroupingUsed(false);//分组可用 df.setCurrency(Currency.getInstance(Locale.US));//加上货币符号,根据不同国家地区 System.out.println(df.format(100000));//格式化