`
geelong
  • 浏览: 115200 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Class 反射初步

阅读更多

获得类

 

package org.lxh.demo15.getclassdemo ;

class X{

};

public class GetClassDemo02{

public static void main(String args[]){

Class<?> c1 = null ; // 指定泛型

Class<?> c2 = null ; // 指定泛型

Class<?> c3 = null ; // 指定泛型

try{

// 以下的操作形式是在开发中最常用的一种形式

c1 = Class.forName("org.lxh.demo15.getclassdemo.X") ;

}catch(ClassNotFoundException e){

e.printStackTrace() ;

}

c2 = new X().getClass() ; // 通过Object类中的方法实例化

c3 = X.class ; // 通过类.class实例化

System.out.println("类名称:" + c1.getName())  ; // 得到类的名称

System.out.println("类名称:" + c2.getName())  ; // 得到类的名称

System.out.println("类名称:" + c3.getName())  ; // 得到类的名称

}

};

 

 

2

实例化

 

package org.lxh.demo15.instancedemo ;

class Person{

private String name ; // name属性

private int age ; // age属性

public void setName(String name){

this.name = name ;

}

public void setAge(int age){

this.age = age ;

}

public String getName(){

return this.name ;

}

public int getAge(){

return this.age ;

}

public String toString(){ // 覆写toString()方法

return "姓名:" + this.name + ",年龄:" + this.age  ;

}

};

public class InstanceDemo01{

public static void main(String args[]){

Class<?> c = null ; // 声明Class对象

try{

c = Class.forName("org.lxh.demo15.instancedemo.Person") ;

}catch(ClassNotFoundException e){

e.printStackTrace() ;

}

Person per = null ; // 声明Person对象

try{

per = (Person)c.newInstance() ; // 实例化对象

}catch(Exception e){

e.printStackTrace() ;

}

per.setName("李兴华") ; // 设置姓名

per.setAge(30) ; // 设置年龄

System.out.println(per) ; // 内容输出,调用toString()

}

};

 

 

必须有无参构造方法

 

 

3

有参构造方法

 

package org.lxh.demo15.instancedemo ;

import java.lang.reflect.Constructor ; // 导入反射机制包

class Person{

private String name ; // name属性

private int age ; // age属性

public Person(String name,int age){

this.setName(name) ;

this.setAge(age);

}

public void setName(String name){

this.name = name ;

}

public void setAge(int age){

this.age = age ;

}

public String getName(){

return this.name ;

}

public int getAge(){

return this.age ;

}

public String toString(){ // 覆写toString()方法

return "姓名:" + this.name + ",年龄:" + this.age  ;

}

};

public class InstanceDemo03{

public static void main(String args[]){

Class<?> c = null ; // 声明Class对象

try{

c = Class.forName("org.lxh.demo15.instancedemo.Person") ;

}catch(ClassNotFoundException e){

e.printStackTrace() ;

}

Person per = null ; // 声明Person对象

Constructor<?> cons[] = null ;

cons = c.getConstructors() ;

try{

per = (Person)cons[0].newInstance("李兴华",30) ; // 实例化对象

}catch(Exception e){

e.printStackTrace() ;

}

System.out.println(per) ; // 内容输出,调用toString()

}

};

 

 

分享到:
评论

相关推荐

    JAVA反射机制-Class类-Class对象的获取.pdf

    JAVA反射机制-Class类-Class对象的获取.pdf

    java反射 反编译:.class--&gt;.java

    二,反射机制的作用: 1,反编译:.class--&gt;.java 2,通过反射机制访问java对象的属性,方法,构造方法等; 这样好像更容易理解一些,下边我们具体看怎么实现这些功能。

    java反射jar包中class,并可进行文件比较

    java反射jar包中class,并可进行文件比较

    JAVA_高级特性(hashCode,clone,比较器,Class反射,序列化)

    总结非常完全的文档。对Java初学着和进阶学习的学者是一份相当不错的Java学习资料

    在Java的反射中,Class.forName和Class

    在Java的反射中,Class.forName和ClassLoader的区别共4页.pdf.zip

    Java常用的反射方法

    反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() 2.4 总结 3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取...

    class汉化工具 class汉化工具

    class汉化工具class汉化工具class汉化工具class汉化工具

    JAVA反射机制详解视频

    (获取class文件对象的三种方式) (通过反射获取无参构造方法并使用) (通过反射获取带参构造方法并使用) (通过反射获取私有构造方法并使用) (通过反射获取成员变量并使用) (通过反射获取无参无返回值成员方法并使用) ...

    java 反射简单用例

    java反射的用例代码 // //获取类对象的属性 // Field field = clazz.getDeclaredField("name"); // System.out.println(field); // // Method method = clazz.getDeclaredMethod("getName", new Class[]{}); // ...

    C# 工厂反射源码

    //反射创建 DataCache.SetCache(ClassNamespace, objType);// 写入缓存 } catch (System.Exception ex) { LogHelper.WriteLog(typeof(DataAccess), LogType_Enum.Error, ex); return null; } } return ...

    java反射知识点

    1.获取Class对象的三种方式 2.获取构造方法并调用 3.获取成员方法 4.获取成员变量 5.反射数组 6.通过反射配置文件内容 7.通过反射越过泛型检查 8.其他一些文本笔记 读者需要补充的知识点我来说一下,补充: 1.反射...

    Java笔记-通过反射获取注解及Spring中获取某包下的所有class文件

    首先来看看使用反射来获取注解名: 只需在获取class后调用getAnnotation方法即可,如下 这里是获取JPA映射b表名,Table.class,使用下面这个可以获取表名 import javax.persistence.Table; annotation.name() 这里...

    反射+Class+获取和操作+入门

    反射+Class+获取和操作+入门 - 本资源是一个反射的入门,教你如何用Java的Class类获取和操作类的信息,包括构造器,方法,字段,注解,泛型等。

    java 反射Reflection;Class类

    1.反射机制概述 java能够反射的前提:已经加载过这个类 反射可以通过类名来寻找这个类的所有相关信息、类似于人类的记忆,事先在记忆中有了这个事物的信息,人就可以通过名字来在记忆中寻找事物的具体信息。 ...

    ClassFinal-java class文件安全加密工具

    ClassFinal-java class文件安全加密工具

    Java泛型的用法及T.class的获取过程解析

    主要介绍了Java泛型的用法及T.class的获取过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python实现的简单的class解析以及简单执行class.zip

    python实现的简单的class解析以及简单执行class,使用python2解析java class文件,并简单执行 class,让大家更加了解class

    反射分析类反射分析类

    反射分析类源码,完整的分析.CLASS中的属性,方法等

    Java 反射(Reflection) 经典实用例子

    Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,其中包括Spring、Hibernate等。原理性的问题不是本文的重点,接下来让我们在实例中...

Global site tag (gtag.js) - Google Analytics