`
geelong
  • 浏览: 117277 次
  • 性别: 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反射机制,适合初步接触反射机制的人

    ### Java反射机制详解 #### 一、Java反射机制概述 Java反射机制是Java语言中一个重要的特性,它赋予了Java程序动态操作的能力。通过反射,Java程序可以在运行时获取类的信息,并且可以创建和访问对象及其成员(如...

    c++实现反射demo

    需要注意的是,C++20标准引入了对反射的初步支持,通过`std::reflect`命名空间提供了元对象表示法(Metaclass Representations, MROs),使得反射变得更加标准和高效。然而,目前这一特性尚未被所有编译器广泛支持,...

    java反射笔记

    初步认识反射,我们可以从以下几个方面入手: 1. **Object类的`getClass()`方法**:每个Java对象都继承自Object类,因此可以调用`getClass()`来获取对象的Class对象。例如: ```java Person per = new Person(); ...

    初步了解java编程语言

    - Java源代码通常以.java文件保存,通过javac编译器编译成.class字节码文件。 - 开发工具如Eclipse, IntelliJ IDEA提供强大的代码编辑、调试和项目管理功能。 以上只是Java编程语言基础知识的一部分,随着学习...

    JAVA动态对象装配实现 测试--初步实现bean的set/get功能

    在本文中,我们将深入探讨如何实现基于Java的动态对象装配,并着重于初步实现bean的`set`和`get`功能。这篇文章可能是通过一个名为`DYNC_Object.java`的源代码文件来演示这个概念的。 首先,让我们了解什么是Bean。...

    java入门,基本编程方法,面向对象初步

    Java入门阶段主要涉及安装Java开发环境(JDK),了解Java程序的基本结构,包括类(class)和主方法(main method)。Java程序始于public static void main(String[] args),这是每个Java应用程序的入口点。此外,还...

    Java-Programming-Masterclass

    12. **反射与注解**:理解Java的反射机制,用于在运行时检查类、接口和方法。同时,学习注解的使用,以及自定义注解的实现。 13. **Java EE**:对于有进阶需求的学习者,课程可能会涉及Java企业版(Java EE)的基础...

    java初步指南

    12. **反射和注解**:反射允许程序在运行时检查类、接口、字段和方法的信息,甚至动态调用方法。注解是一种元数据,可以用来标记代码,提供编译时或运行时的元信息。 13. **泛型**:Java泛型允许在类型中使用类型...

    潭州软件学院 - Java VIP系统基础学习课程表.pdf

    学习者会了解Java安装配置,编写第一个Java程序,并区分`public class`与`class`的区别。 第二章深入Java语言基础,讲解了标识符、关键字、数据类型、运算符、字符编码和控制语句。此外,还涉及方法的初步使用和...

    Scala程序设计(第2版)

    24.2.2 ClassTag、TypeTag与Manifest 457 24.3 Scala 的高级运行时反射API 458 24.4 宏 461 24.4.1 宏的示例:强制不变性 463 24.4.2 关于宏的最后思考 466 24.5 本章回顾与下一章提要 466 附录A...

    Java基础资料

    Day05可能涵盖了抽象类(Abstract Class)和内部类(Inner Class)的概念。 第三章:JAVA-SE-01 这部分可能是对Java Standard Edition(Java SE)更深入的学习,可能涉及到文件I/O、异常处理、集合框架、反射、线程...

    零基础进入JAVA的世界

    在掌握了基础之后,可以进一步探索Java集合框架(如ArrayList、LinkedList、HashMap等)、IO流、多线程、网络编程、反射等进阶主题。此外,对于想要在Web开发领域发展的学习者,还需要了解Servlet、JSP、Spring框架...

    SUN认证考试

    7. **Java反射API**:理解反射机制,包括Class类、Constructor类、Method类和Field类的使用,以及动态代理的概念。 8. **Java内存模型和垃圾回收**:了解JVM的工作原理,特别是内存区域划分,以及垃圾回收机制。 9...

    javabean基础知识

    - **具有无参构造函数**:这是JavaBean的基本要求之一,确保可以通过反射等机制创建JavaBean实例。 - **使用get/set方法访问其属性**:JavaBean的属性通常遵循JavaBeans规范,即通过get和set方法来访问和修改。 ...

    python 注入漏洞.md

    2. **构造测试URL进行初步验证**: - 构造URL `http://111.198.29.45:46675/{{7*7}}` 来测试是否能够成功执行内嵌的表达式。 - 服务器响应`URL http://111.198.29.45:46675/49 not found` 表明了`7*7`被正确执行。...

    eCognitionDeveloper软件常用算法与特征.docx

    - **应用场景**: 通常用于图像和对象的初步分割。 **四叉树分割 (Quadtree Segmentation)** - **定义**: 类似于棋盘分割,但能够创建不同大小的正方形。 - **实现**: 初始时,将图像分割成正方形网格,然后对不符合...

    实验项目D、Java应用专题编程

    - **反射**允许程序在运行时获取类的信息,并创建和操作对象,这对于框架和工具库特别有用。 - **注解**提供了一种灵活的方式来添加元数据到程序元素上,可以被编译器或其他工具用来生成文档或代码等。 ##### ...

    Java入门经典

    10. **反射**:了解反射机制,如何在运行时获取类的信息(Class对象),创建和调用对象,以及访问私有成员。 11. **枚举与注解**:理解枚举类型(enum)的使用,以及注解(Annotation)在代码元数据中的作用。 12....

Global site tag (gtag.js) - Google Analytics