[CareerCup] 14.5 Object Reflection 对象反射 - Grandyang - 博客园



[CareerCup] 14.5 Object Reflection 对象反射 - Grandyang - 博客园

[CareerCup] 14.5 Object Reflection 对象反射

 

14.5 Explain what object reflection is in Java and why it is useful.

 

Java中的对象反射机制可以获得Java类和对象的反射信息,并可采取如下操作:

1. 在运行阶段获得类内部的方法和字段信息

2. 新建类的实例

3.通过获取字段引用来获得和舍弃对象字段,无论该字段是私有还是公有的。

 

下列代码是对象反射的一个例子:

复制代码
// Parameters  Object[] doubleArgs = new Object[] {4.2, 3.9};  // Get class  Class rectangleDefinition = Class.forNmae("MyProj.Rectangle");  // Equivalent: Rectange = new Rectangle(4.2, 3.9);  Class[] doubleArgsClass = new Class[] {double.class, double.class};  Constructor doubleArgsConstructor = rectangleDefinition.getConstructor(doubleArgsClass);  Rectangle rectangle = (Rectangle) doubleArgsConstructor.newInstance(doubleArgs);  // Equivalent: Double area = rectangle.area();  Method m = rectangleDefinition.getDeclaredMethod("area");  Double area = (Double) m.invoke(rectangle);    // This code does the equivalent of   Rectangle rectangle = new Rectange(4.2, 3.9);  Double area = rectangle.area();
复制代码

 

对象反射为什么有用?

1. 观测和操控应用运行时的行为

2. 帮助调试和测试程序,通过直接接触到方法,构造函数和字段

3. 我们可以调用方法即便我们事先不知道该方法。比如,我们可以让用户传入类名称,构建函数的参数,和方法名称。我们利用这些信息区建立一个对象并调用一个方法。


Read full article from [CareerCup] 14.5 Object Reflection 对象反射 - Grandyang - 博客园


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts