摘要: 对于构造器,则不能像执行方法那样进行,因为执行一个构造器就意味着创建了一个新的对象 (准确的说,创建一个对象的过程包括分配内存和构造对象)。所以,与上例最相似的例子如下: 根据指定的参数类型找到相应的构造函数并执行它,以创建一个新的对象实例。使用这种方法可以在程序运行时动态地创建对象,而不是在编译的 阅读全文
posted @ 2018-10-01 00:40 尐鱼儿 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 文本到这里,所举的例子无一例外都与如何获取类的信息有关。我们也可以用 reflection 来做一些其它的事情,比如执行一个指定了名称的方法。下面的示例演示了这一操作: 假如一个程序在执行的某处的时候才知道需要执行某个方法,这个方法的名称是在程序的运行过程中指定的 (例如,JavaBean开发环境中 阅读全文
posted @ 2018-10-01 00:39 尐鱼儿 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 找出一个类中定义了哪些数据字段也是可能的,下面的代码就在干这个事情: 这个例子和前面那个例子非常相似。例中使用了一个新东西 Modifier,它也是一个 reflection 类,用来描述字段成员的修饰语,如“private int”。这些修饰语自身由整数描述,而且使用 Modifier.toStr 阅读全文
posted @ 2018-10-01 00:38 尐鱼儿 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 获取类构造器的用法与上述获取方法的用法类似,如: 这个例子中没能获得返回类型的相关信息,那是因为构造器没有返回类型。 这个程序运行的结果是: 阅读全文
posted @ 2018-10-01 00:37 尐鱼儿 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 找出一个类中定义了些什么方法,这是一个非常有价值也非常基础的 reflection 用法。下面的代码就实现了这一用法: 这个程序首先取得 method1 类的描述,然后调用 getDeclaredMethods 来获取一系列的 Method 对象,它们分别描述了定义在类中的每一个方法,包括 publ 阅读全文
posted @ 2018-10-01 00:35 尐鱼儿 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 用于 reflection 的类,如 Method,可以在 java.lang.relfect 包中找到。使用这些类的时候必须要遵循三个步骤:第一步是获得你想操作的类的 java.lang.Class 对象。在运行中的 Java 程序中,用 java.lang.Class 类来描述类和接口等。 下面 阅读全文
posted @ 2018-10-01 00:34 尐鱼儿 阅读(218) 评论(0) 推荐(0) 编辑
摘要: Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。例如,反射经常在持续存储对象为数据库、XML或其它外部格式的框架中使用。Java reflection 非常有 阅读全文
posted @ 2018-10-01 00:33 尐鱼儿 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。 按如下语句执行: 它的结果输出为: 这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。 这个程序使用 Class.forName 载入指定的类,然后调用 getDeclaredMethods 阅读全文
posted @ 2018-10-01 00:33 尐鱼儿 阅读(230) 评论(0) 推荐(0) 编辑
摘要: sleep:Thread类中定义的方法,表示线程休眠,会自动唤醒;wait:Object中定义的方法,需要手工调用notify()或者notifyAll()方法。sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用s 阅读全文
posted @ 2018-09-30 23:50 尐鱼儿 阅读(1440) 评论(0) 推荐(0) 编辑
摘要: 主要相同点:Lock能完成synchronized所实现的所有功能 。 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。Lock还有更强大的功能,例如,它的try 阅读全文
posted @ 2018-09-30 23:38 尐鱼儿 阅读(503) 评论(0) 推荐(0) 编辑