- 浏览: 369601 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
参考链接
http://www.cnblogs.com/mengdd/archive/2013/01/26/2877972.html
http://www.cnblogs.com/mengdd/archive/2013/01/26/2877972.html
import java.lang.reflect.Method; public class TestReflect { /** * @param args * @throws Exception */ public static void TestCase1(String[] args) throws Exception { //获得字符串所标识的类的class对象 Class<?> classType = Class.forName("java.lang.String");//在此处传入字符串指定类名,所以参数获取可以是一个运行期的行为,可以用args[0] //返回class对象所对应的类或接口中,所声明的所有方法的数组(包括私有方法) Method[] methods = classType.getDeclaredMethods(); //遍历输出所有方法声明 for(Method method : methods) { System.out.println(method); } } public static void TestCase2(String[] args) throws Exception { // 以前的常规执行手段 InvokeTester tester = new InvokeTester(); System.out.println(tester.add(1, 2)); System.out.println(tester.echo("Tom")); System.out.println("---------------------------"); // 通过反射的方式 // 第一步,获取Class对象 // 前面用的方法是:Class.forName()方法获取 // 这里用第二种方法,类名.class Class<?> classType = InvokeTester.class; // 生成新的对象:用newInstance()方法 Object invokeTester = classType.newInstance(); System.out.println(invokeTester instanceof InvokeTester); // 输出true // 通过反射调用方法 // 首先需要获得与该方法对应的Method对象 Method addMethod = classType.getMethod("add", new Class[] { int.class, int.class }); // 第一个参数是方法名,第二个参数是这个方法所需要的参数的Class对象的数组 // 调用目标方法 Object result = addMethod.invoke(invokeTester, new Object[] { 1, 2 }); System.out.println(result); // 此时result是Integer类型 //调用第二个方法 Method echoMethod = classType.getDeclaredMethod("echo", new Class[]{String.class}); Object result2 = echoMethod.invoke(invokeTester, new Object[]{"Tom"}); System.out.println(result2); } public static void main(String[] args) throws Exception { TestCase1(args); TestCase2(args); } } class InvokeTester { public int add(int param1, int param2) { return param1 + param2; } public String echo(String message) { return "Hello: " + message; } }
发表评论
-
[轉]java中String的“==”和equals判断相等性
2017-11-27 15:24 455http://blog.csdn.net/liucheng20 ... -
Android NDK搭建環境
2017-11-27 13:25 579https://www.cnblogs.com/ut2016- ... -
Java语言编码规范
2017-06-27 15:54 568http://morningspace.51.net/reso ... -
Java AWT应用示例 - 持续更新
2017-06-27 11:39 636/* * @(#)SampleAWT.java ... -
Java 事件模型基础:监听器、事件、事件源、事件注册
2017-06-27 08:55 822转自 http://www.cnblogs.com/mengd ... -
Java中基本数据类型和包装器类型的关系
2017-06-27 08:37 755转自 http://www.cnblogs.com/h ... -
深入剖析Java中的装箱和拆箱
2017-06-27 08:31 487转自 http://www.cnblogs.com/dolph ... -
Java JAR打包相关
2017-06-26 20:57 584JAVA jar打包时MANIFEST.MF格式约定 http ... -
Java反编译工具 - Java Decompiler
2017-06-21 20:14 474http://jd.benow.ca/ JD-GUI is ... -
javac,使用"-d ."与省略-d的区别
2017-06-20 20:27 808在当前工作目录下生成class文件,一般情况下有两种方法 ... -
JAVA环境变量配置
2017-06-19 13:56 354参考Link http://www.cnblogs.com/x ... -
Java高级应用之JNI
2017-06-19 09:00 599参考link http://www.cnblogs.com/l ... -
JDK工具appletviewer详解
2017-06-19 08:25 1129http://www.softown.cn/post/170. ... -
Java rt.jar 源码分析
2017-06-18 10:32 649jdk1.8.0_102 SRC +com +java ... -
应用 Command 模式进行流水号管理的最佳实践
2016-07-10 18:02 612转自 http://www.ibm.com/devel ...
相关推荐
在深入探讨"Java高级应用教程"这一主题之前,我们首先要理解Java编程语言的基本概念。Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。其设计哲学是“一次编写,...
7. **第7章 JAVA高级应用**: 这一章可能涵盖了除上述内容外的其他高级Java话题,如反射、代理、注解、泛型等,这些都是Java进阶开发者必须掌握的技能。 8. **第8章 JAVA 8新特性**: Java8引入了大量新特性,如...
"详解Java高级特性之反射" Java反射机制是Java语言中一个非常重要的概念,它允许程序在运行时检查和修改其他类的行为。Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意...
2.反射,暴力反射,和静态做斗争,暴力反射,setAccessible 无论公有私有都可以用来访问 3.动态代理 在调用这个目标方法前,后,2头,异常处都可以动态的加上自己需要逻辑判断,而且根据反射来动态的替换实现类,大大提升了...
Java作为一种强大的编程语言,提供了许多高级特性,其中反射机制尤为突出。通过反射,开发者可以在运行时动态地获取类的信息并操纵类的行为,从而实现更加灵活和扩展性强的程序设计。 #### 二、Java中的类反射 ###...
"Java高级应用资料"集合通常包含一系列深入讲解Java高级特性和最佳实践的文档、教程或代码示例,旨在帮助Java开发者提升技能,实现更高效、更优化的编程。 在Java的世界里,"高级应用"可能涵盖以下几个核心领域: ...
Java试题-3:反射和泛型的综合应用 Java反射 泛型都是比较高级的应用技术
web 网络 泛型 反射 注解 枚举 java高级思维导图java高级思维导图
本教程"Java高级实用教程"旨在帮助你深入理解和掌握Java的核心高级概念,从而提升你的编程技能和解决问题的能力。下面将对Java的一些关键高级知识点进行详尽的阐述。 1. **多线程**:Java提供了丰富的多线程支持,...
"Java高级应用作业集"很可能包含了一系列与Java高级特性和实践相关的编程任务或项目,旨在帮助学习者深入理解和掌握Java的强大功能。在这个作业集中,我们可以预见到涵盖以下几个核心领域的知识点: 1. **多线程**...
Java作为一种高级编程语言,也支持反射功能。反射机制为Java程序员提供了一种强大的工具,使得程序能够在运行时动态地获取类的信息,并且能够直接操作程序的内部结构。这种能力使得Java程序更加灵活,能够根据运行时...
本章节我们将聚焦于“Java高级课后练习题2”,这个练习题通常会涵盖诸如多线程、集合框架、异常处理、反射、IO流、网络编程、设计模式等核心主题。以下是对这些知识点的详细讲解: 1. **多线程**:Java提供了丰富的...
### Java高级应用知识点详解 ...总结,Java高级应用包括自定义注解、反射机制、动态编译、字节码操作等多个方面,这些技术不仅能够提升程序的灵活性和扩展性,还能帮助开发者更好地理解和控制程序的底层行为。
以下将详细介绍这些Java高级应用的知识点。 1. **多线程**:在Java中,多线程是程序执行的核心部分,它可以提升程序的执行效率和响应时间。通过实现Runnable接口或继承Thread类来创建线程,同时理解线程同步机制,...
学习如何有效地管理线程和避免并发问题,如死锁和竞态条件,是Java高级应用的重要部分。 2. **Java集合框架**:深入理解ArrayList、LinkedList、HashSet、HashMap等数据结构的内部工作原理,以及它们在不同场景下的...
以上就是Java高级教程中可能涵盖的一些核心知识点。熟练掌握这些内容,将使你能够编写出高效、可维护且易于扩展的Java应用。同时,持续关注Java的新特性和发展趋势,如Java 11、12及更高版本的更新,也是保持技术...
这一概念的引入促进了计算机科学领域对反射性的研究,并迅速被应用于程序语言的设计之中。在Lisp语言和面向对象编程中取得了显著成果。此外,LEAD/LEAD++、OpenC++、MetaXa和OpenJava等编程语言都是基于反射机制构建...
Java 反射(Java Reflection)是Java编程语言中的一种高级特性,它允许程序在运行时动态地获取类的信息(如类名、字段、方法等)并进行操作,从而增加了程序的灵活性和动态性。以下是对Java反射机制的详细解释: 1. ...