这一章节我们来讨论一些利用反射提取类的方法与构造器。
1.例子
package com.ray.ch11;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class Test {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
try {
Class<Person> personClass = (Class<Person>) Class
.forName("com.ray.ch11.Person");
for (Method method : personClass.getMethods()) {
System.out.println(method);
}
for (Constructor constructor : personClass.getConstructors()) {
System.out.println(constructor);
}
} catch (ClassNotFoundException e) {
System.out.println("class not found");
}
}
}
class Person {
public Person(int age) {
}
public Person(String sex) {
}
static {
System.out.println("loading person");
}
public void say() {
}
public void sleep() {
}
public void run() {
}
}
输出:
loading person
public void com.ray.ch11.Person.say()
public void com.ray.ch11.Person.run()
public void com.ray.ch11.Person.sleep()
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
public com.ray.ch11.Person(int)
public com.ray.ch11.Person(java.lang.String)
从输出里面可以看见,除去我们自己定义的三个方法和两个构造器,还有一些属于Object的公共方法。
注意:这里显示的方法和构造器只能显示public的,private和protected的方法或者构造器则不能显示。
我们修改一下上面的代码:
package com.ray.ch11;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class Test {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
try {
Class<Person> personClass = (Class<Person>) Class
.forName("com.ray.ch11.Person");
for (Method method : personClass.getMethods()) {
System.out.println(method);
}
for (Constructor constructor : personClass.getConstructors()) {
System.out.println(constructor);
}
} catch (ClassNotFoundException e) {
System.out.println("class not found");
}
}
}
class Person {
private Person(int age) {
}
protected Person(String sex) {
}
static {
System.out.println("loading person");
}
protected void say() {
}
private void sleep() {
}
public void run() {
}
}
输出:
loading person
public void com.ray.ch11.Person.run()
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
从输出里面看出,明显是少了一部分private和protected的东西。
2.还有其他的用法是当不知道某一个类的方法或者构造器的时候,这个就比较方便的。
package com.ray.ch11;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class Test {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
try {
Class<String> strClass = (Class<String>) Class
.forName("java.lang.String");
for (Method method : strClass.getMethods()) {
System.out.println(method);
}
for (Constructor constructor : strClass.getConstructors()) {
System.out.println(constructor);
}
} catch (ClassNotFoundException e) {
System.out.println("class not found");
}
}
}
输出:
由于太多不在这里输出
上面的代码就是显示String类的方法和构造器的代码。
总结:这一章节我们展示了利用反射提取类的方法与构造器。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
1. **类文件**:这些是编译后的Java源代码,包含实现了各种功能的方法和类。它们可能包括数据结构、算法实现、线程管理、网络通信等通用工具类。 2. **资源文件**:可能包含如XML配置文件、图片、字体或其他非Java...
Eclipse IDE for Java Developers 是一款广泛使用的集成开发环境(IDE),专为Java编程设计。它由Eclipse基金会维护,提供了一整套工具,用于编写、调试、测试和部署Java应用程序。2021-12-R 版本是Eclipse的一个...
在标签中,“ntrip__java实现”表明这个客户端是用Java编程语言编写的,这是Android应用开发的常见选择,因为Java与Android SDK兼容性良好。“ntrip_android_client”和“ntrip_client”则明确了这是一个面向Android...
2. **aip-java-sdk-4.2.0.jar**:这是核心的AIP Java SDK库文件,包含了所有用于与百度AI平台交互的类和方法。开发者需要引入这个jar文件到他们的Android项目中,才能使用SDK提供的功能。 3. **json-20160810.jar**...
- 通过构造器转换: ```java int pInt = 500; Integer wInt = new Integer(pInt); ``` - 通过静态方法转换: ```java String sInt = "500"; Integer wInt = Integer.valueOf(sInt); ``` - **从包装类到...
在Java代码中,他们可以通过导入Aspose.Words相关的类和方法,开始执行文档处理任务。例如,下面是一个简单的例子,演示如何使用Aspose.Words读取和保存一个Word文档: ```java import com.aspose.words.Document; ...
Java Swing是Java GUI(图形用户界面)开发的一个重要组件,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing提供了丰富的组件库,允许开发者创建美观且功能丰富的交互式用户界面。在这个...
【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...
Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...
例如,使用Spring MVC,你只需在控制器方法中声明一个`MultipartFile[] files`参数,Spring会自动处理文件上传。 通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得...
根据给定文件的信息,我们可以提炼出关于Java软件开发中List接口实现类的关键知识点。这部分内容主要聚焦于第11章的“Java集合框架和泛型机制”,特别关注List接口及其几种实现类,包括`ArrayList`、`LinkedList`、`...
1. **源代码**:这是实现模糊视图背景的核心部分,可能包含Java类和方法,用于处理图像并应用模糊效果。 2. **示例应用**:可能包含一个简单的Java应用,演示如何使用库来创建模糊视图背景,这对于开发者理解和学习...
通过`get()`方法和迭代器`iterator()`获取并打印元素。接着,使用`Collections.sort()`对列表进行排序,并再次打印排序后的元素。 5. 其他List实现类: - Vector:类似于ArrayList,但在多线程环境中提供同步支持,...
这些库通常以JAR(Java Archive)文件的形式存在,里面封装了类和方法,可供应用程序调用。Java库广泛应用于网络通信、数据库操作、图形用户界面(GUI)、数学计算、XML处理、安全、并发等各个领域。 1. **网络通信...
- 使用`Constructor`和`Method`对象调用构造器和方法。 - 设置`Accessible`属性来访问私有成员。 #### 十、设计模式 设计模式是一套被反复使用的解决方案模板,用于解决软件设计中的常见问题。 - **常用的设计...
Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时。在这个名为"java-sdk-master.zip"的压缩包中,包含的是Leancound的Java SDK,这是一个专为集成Leancound服务而设计的开发工具包。Leancound是...
开发者可以将这个库导入到自己的项目中,以便利用其提供的功能,而不是从头编写这些常见的功能模块。 【标签】"Java" 表明这个库是专门为 Java 语言设计的,与 Java 语法兼容,并且可以在 Java 虚拟机(JVM)上运行...
4. **第三章和第四章:面向对象基础**:这两章会详细讨论类和对象的创建,包括构造函数、方法、封装、继承和接口。面向对象编程是Java的基石,理解这些概念对于后续的学习至关重要。 5. **第五章:异常处理**:Java...
通过这个课程,你将从安装Java开发环境(如JDK)开始,逐步学习Java语法、类与对象、封装、继承、多态等核心概念。此外,你还将接触到控制流(条件语句、循环)、异常处理、文件操作、集合框架、IO流、多线程、网络...