在实例方法中如何获取该方法所属的类名、方法名、行数呢?
例子项目有两个类:
package com.jn.bean; public class Student { public String method2(int age,String name) { System.out.println("execute...."); Class clazz = this.getClass(); String className = clazz.getCanonicalName();/* com.jn.bean.Student */ String classSimpleName = clazz.getSimpleName(); Object[] objs = clazz.getSigners(); //当前的线程 Thread currentThread=Thread.currentThread(); //当前的线程名称 String threadName =currentThread .getName(); StackTraceElement stackElement=currentThread.getStackTrace()[1]; //当前的方法名 String methodName=stackElement.getMethodName(); //当前的文件名 String filename=stackElement.getFileName(); int lineNum=stackElement.getLineNumber(); System.out.println("class name:\t\t" + className); System.out.println("class simple name:\t" + classSimpleName); System.out.println("thread name:\t\t" + threadName); System.out.println("method name:\t\t"+methodName); System.out.println("file name:\t\t"+filename); System.out.println("line number:\t\t"+lineNum); System.out.println("----------------------------------\n"); System.out.println("objs:" + objs); if (objs != null) { for (int i = 0; i < objs.length; i++) { Object object = objs[i]; System.out.println(object); } } return "success"; } } package com.jn.main; import com.jn.bean.Student; public class Main2 { public static void main(String[] args) { Student student=new Student(); student.method2(1,null); } }
运行结果:
项目结构如下:
总结:
(1)在实例方法中获取类名
Class clazz = this.getClass();//因为是实例方法,所以可以用this
String className = clazz.getCanonicalName();/* com.jn.bean.Student */
String classSimpleName = clazz.getSimpleName();
(2)获取方法名
//当前的线程
Thread currentThread=Thread.currentThread();
StackTraceElement stackElement=currentThread.getStackTrace()[1];
//当前的方法名
String methodName=stackElement.getMethodName();
(3)获取当前行数
//当前的线程
Thread currentThread=Thread.currentThread();
StackTraceElement stackElement=currentThread.getStackTrace()[1];
int lineNum=stackElement.getLineNumber();
相关推荐
11. **获取属性的方法**:使用 `get` 加上属性名,如 `getX()`。 12. **设置属性的方法**:使用 `set` 加上属性名和值,如 `setX(X value)`。 13. **返回布尔值的方法**:对于布尔变量,可以使用 `is` 加形容词,`...
当我们需要获取Memo控件中的特定信息,如行数和列数时,可以通过处理Windows消息来实现。 Windows消息是操作系统用来在窗口之间传递信息的一种机制。每个消息都由一个特定的消息标识符(例如WM_GETTEXT、WM_CHAR等...
- 如果方法具有返回值,则需要在方法体中使用return语句返回对应的值。返回值类型必须与方法声明的返回值类型兼容。 - 方法调用时,可以通过对象名.方法名()的形式来调用。如果方法不带参数,调用时可以省略括号。...
8. 在派生类中重新定义基类方法时,应保持与基类完全相同的方法名、参数列表和返回类型,这是方法的重写(Override),否则就是定义新的方法。 9. C#中所有异常类的基类是`Exception`,主动引发异常的语句关键字是`...
1. 获取Class对象:反射的起点是获取`Class`对象,可以通过`Class.forName()`方法,或者对象的`getClass()`方法,以及类名.class的方式获取。 2. 创建对象:`Class`对象的`newInstance()`方法用于创建指定类的新...
- 整个应用系统使用自定义的异常类,该类包含了错误信息(message)和异常类型ID号(整型),在创建异常时自动获取类名、方法名、行号等信息。 - 在系统开发阶段以及上线后一段时间内,异常信息应该直接显示在浏览器页面...
面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它强调将数据和操作数据的方法封装在独立的实体——类(Class)中。PHP支持面向对象编程,尽管它最初的设计并不是完全面向对象的,但在...
在本课程设计中,我们将设计一个名为CMatrix的矩阵类,用于表示矩阵的基本操作和性质。 一、类名和私有成员变量 在CMatrix类中,我们定义了三个私有成员变量: * pElement(double*):矩阵元素存储地址 * nRow...
10. 方法重写:在C#中,如果要重写父类的方法,父类的方法必须是虚方法(virtual),而子类的方法则需要使用override修饰符。因此,正确答案是d)以上所有。 11. 继承和方法重写:Base类有一个虚拟方法M(),Sub类...
- **知识点**:构造方法的方法名必须和类名相同,方法名前面没有返回值类型的声明,在方法中不能使用 return 语句返回一个值。 - **解释**:构造方法是类的一个特殊成员,主要用于对象的初始化。它具有与类名相同的...
- **成员方法**: 定义类的行为。 **8. 主类的概念** - **知识点**: Java 程序中的主类是指包含 `main` 方法的类,这是程序的入口点。对于 Java Application 来说,`main` 方法是必需的;而对于 Java Applet,则...
- `+`前缀的方法是类方法,可以直接通过类名调用。 3. 属性(Property): 使用`@property`关键字定义属性,可以控制成员变量的访问权限、访问方式(nonatomic或atomic)。例如: ```objc @property(nonatomic,...
反射机制允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作,提供了对Java对象模型的动态访问能力。 这些只是Java面试中可能会遇到的一部分问题,涵盖范围广泛,从基础语法到高级特性,深入...
- **方法调用**: 可以通过类名或对象名调用方法。 - 示例:`swap(c1, c2);` - 这行代码调用了`swap`方法,并传入了两个`Card`类型的对象`c1`和`c2`作为参数。 ### 3. 参数传递 - **按值传递**: Java中所有参数都...
构造方法与普通成员方法的区别 - **知识点**: 构造方法是类的一个特殊成员,在类实例化对象时被自动调用;而普通方法则需显式调用(正确)。 - **解释**: 构造方法主要用于初始化对象的状态,其名称必须与类名相同且...
重写(Override)发生在子类中,当子类提供与父类完全相同的方法签名(包括返回类型和方法名)的方法时。 10. **Final类**:Final类不能被其他类继承,保证了类的封闭性。 11. **继承执行顺序**:在继承关系中,...
- **文件属性查看**:在Windows操作系统中,右键点击文件图标选择“属性”时,并不能直接查看到文件的字数和行数信息。这些信息通常需要借助专门的文字处理软件或其他工具来获取。 ### 3. Java 日期操作类 - **...
8. 在Windows中,右击文件图标无法直接查看文件的字数和行数,但可以通过打开文件并使用相关工具来获取这些信息。 9. 数据结构的逻辑结构与所使用的计算机无关,而物理结构和存储结构则与计算机硬件和操作系统有关...
- 在`DBConnection`构造方法中,建议使用更具体的异常类型,而不是泛化的`Exception`。 - 可以使用`SQLException`替代`Exception`,以更准确地处理数据库相关的错误。 2. **资源管理**: - 考虑使用`try-with-...