package 测试;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class TestDemo {
public String toString(Object obj) {//重写toString()方法
Class clazz = obj.getClass();
StringBuilder sb = new StringBuilder();
Package pakName = clazz.getPackage();
sb.append("包名:"+pakName.getName()+"\t");
String className = clazz.getSimpleName();
sb.append("类名:"+className+"\n");
sb.append("公共构造方法:\n");
//获得所有代表构造方法的Constructor数组
Constructor[] cons = clazz.getDeclaredConstructors();
for(Constructor constructor : cons) {
String modifier = Modifier.toString(constructor.getModifiers());//获得修饰符(判断是共有,默认,还是私有)
if(modifier.contains("public")) {
sb.append(constructor.toGenericString()+"\n");
}
}
sb.append("公共域:\n");
//获得代表所有域的Field数组
Field[] fields = clazz.getDeclaredFields();
for(Field field : fields) {
String modifier = Modifier.toString(field.getModifiers());
if(modifier.contains("public")) {//查看修饰符是否有public
sb.append(field.toGenericString()+"\n");
}
}
sb.append("公共方法:\n");
//获得代表所有方法的Method数组
Method[] methods = clazz.getDeclaredMethods();
for(Method method : methods) {
String modifier = Modifier.toString(method.getModifiers());
if(modifier.contains("public")) {//查看修饰符是否有public
sb.append(method.toGenericString()+"\n");
}
}
return sb.toString();
}
public static void main(String args[]){
System.out.println(new TestDemo().toString(new java.util.Date()));//在此处传入你要反射查询的java类,比如此处查询的是Date()类
}
}
分享到:
相关推荐
在`OverrideTest`类中,`toString()`方法前使用了`@Override`,表示该方法是重写`Object`类的`toString()`方法。 2. **@Deprecated**:这个注解用于标记某个方法或类不再推荐使用。当其他代码使用了被`@Deprecated`...
3. 通过反射获取类模板对象,再通过 Class 对象的 newInstance() 方法创建 4. 通过反射获取类模板对象,再 Constructor 对象创建 5. 反序列化的方式创建 final 的作用 final 可以修饰类、方法、变量。 * 修饰类:...
例如,可以通过 `Class` 类的方法获取类的信息: ```java Class<?> clazz = Person02.class; System.out.println(clazz.getName()); // 输出 "Person02" ``` 还可以使用反射来创建对象和调用方法: ```java ...
实现接口意味着类需要提供接口中所有方法的具体实现。例如,`class MyClass implements MyInterface` 表示 `MyClass` 实现了 `MyInterface` 接口。 ### 25. 实现多个接口 Java 支持类实现多个接口。例如,`class ...
类的返射机制是指 Java 中的反射机制,可以通过反射机制来获取类的信息和调用类的方法。 21. 得到 Class 的三个过程是什么?可以使用 Class.forName 方法、getClass 方法或类字面量来获取 Class 对象。 22. 如何...
- `final`类中的所有成员方法都是`final`的,意味着这些方法不能被重写。 - `final`类中的成员变量如果是`final`的,则其值一旦被初始化就不能被修改。 #### 11. 继承时候类的执行顺序问题,一般都是选择题,问你将会...
多态可以通过接口实现、继承父类重写方法、同一类中进行方法重载来实现。虚拟机通过动态绑定技术来实现多态,执行期间判断所引用对象的实际类型,根据实际类型调用对应的方法。 接口的意义可以用三个词来概括:规范...
抽象类中可以包含抽象方法,抽象方法没有具体的实现,需要被子类覆盖。 #### 14. final关键字 `final`关键字可以用来声明不可变的变量或方法,表示该变量或方法不能被修改。 #### 15. 静态变量与静态方法 静态...
`@Override` 是Java标准库中的一个`Annotation`类型,用于表明某个方法是重写父类中的同名方法。 - **用途** 当使用`@Override`标注一个方法时,如果该方法实际上并未重写父类中的方法,编译器会报错。 - **...
3. **getClass()方法**:返回对象的运行时类,可以用来获取对象所属的类信息,常用于反射机制。 ```java Object obj = new Object(); Class<?> clazz = obj.getClass(); // 获取Object类 ``` 4. **toString()...
反射机制允许运行时检查类的信息,包括字段、方法和构造函数,并动态调用方法或创建对象。 #### 20. 类的返射机制中的包及核心类? 反射相关的包是`java.lang.reflect`,核心类包括`Class`、`Constructor`、`Field`...
- Object类是所有Java类的父类,提供了如toString()、equals()等常用方法。 **7.10 封装类** - Java为每种基本数据类型提供了对应的包装类,如Integer、Double等。 **7.11 内部类** - **7.11.1 内部类的分类** ...
注解(Annotation)是一种元数据,可以附加到源代码的不同元素上,提供编译时和运行时的信息,如@Deprecated表示某个方法已过时,@Override表明子类方法重写父类方法。 八、泛型 Java 5引入了泛型,提高了类型安全...
可以通过反射机制中的 `Method` 类来调用类中的方法。首先获取 `Method` 对象,然后使用 `invoke()` 方法来执行该方法。 **23. 如何将数值型字符转换为数字(Integer,Double)?** 可以使用 `Integer.parseInt()`...
使用反射中的`Method`对象的`invoke()`方法来调用类中的方法。 #### 23. 如何将数值型字符转换为数字(Integer,Double)? 可以使用`Character.getNumericValue(char)`方法或者`Integer.parseInt(String)`、`...
- 使用`Method`类的`invoke()`方法,需要先通过反射获取`Method`对象。 #### 23. 如何将数值型字符转换为数字(Integer,Double)? - 可以使用`Integer.parseInt(String s)`和`Double.parseDouble(String s)`等...
Java反射机制允许程序在运行时获取类的信息(如字段、方法等)并操作对象,增强了程序的灵活性和可扩展性。 #### 22. Object类的方法 Java中的所有类都直接或间接继承自`Object`类,该类提供了许多常用的方法,如:...
- **泛型**:允许在类、接口和方法中使用类型参数,从而实现代码复用和类型安全。 - 泛型在编译时被擦除,但在运行时仍然保持类型信息。 ##### 2.4 异常 (EXCEPTION) - **异常处理**:Java中异常处理机制的核心是...