• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > java 中如何获取字节码文件的相关内容

java 中如何获取字节码文件的相关内容

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java字节流读取文件,java字节码文件,java字节流写入文件,java字节流复制文件,java按字节读取文件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

java 中如何获取字节码文件的相关内容

反射机制是指在运行状态中,对任意一个类(class文件),都能知道这个类的所有属性和方法;对任意一个对象,都能调用这个对象的方法和属性。这种动态的获取信息和动态的调用对象的方法的功能称为——Java语言的反射机制。

简单点说,动态的获取类中的信息,这就是Java的反射机制。

在Java的反射机制中,我们可以通过配置文件信息,然后通过类名来获取类中包含的详细信息,如构造函数、成员变量和成员函数等。在接下来,作者将分别演示如何通过类名来获取类中包含的信息。

一、获取字节码文件的构造函数

import java.lang.reflect.Constructor;

public class GetClassConstructor {
  public static void main(String[] args) throws Exception {
    createNewObject_2();
  }

  public static void createNewObject_2() throws Exception {
    /**
     * 当获取指定名称对应类中的所体现的对象时,而且该对象的初始化不适用空参的构造函数
     * 可以先通过该类的字节码文件对象,获取空参的构造函数
     * 该方法为:getConstructor(parameterTypes)
     */

  // 包名一定要写全,否则会报"java.lang.ClassNotFoundException"异常
  String name = "src.Person";
    // 找寻该名称类文件,并加进内存,产生Class对象
    Class clazz = Class.forName(name);
    // 获取指定的构造函数对象
    Constructor constructor = clazz.getConstructor(String.class, int.class);
    // 通过该构造器对象的newInstance进行对象的初始化
    constructor.newInstance("小明", 12);
  }

  public static void createNewObject() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
    String name = "src.Person";
    // 找寻该名称类文件,并加进内存,产生Class对象
    Class clazz = Class.forName(name);
    // 产生该类的实例对象(空参)
    Object obj = clazz.newInstance();
  }
}

</div>

二、获取字节码文件的成员变量

import java.lang.reflect.Field;

public class GetClassField {
  public static void main(String[] args) throws Exception {
    getField();
  }

  /**
   * 获取字节码文件中的成员变量
   */
  public static void getField() throws Exception {
    Class clazz = Class.forName("src.Person");
    Field field = null;

    // 获取本类字段,包含私有
    field = clazz.getDeclaredField("age");

    // 对私有字段的访问取消权限检查,可称之为暴力访问
    field.setAccessible(true);

    Object obj = clazz.newInstance();

    field.set(obj, Integer.valueOf(89));

    Object o = field.get(obj);
    System.out.println(o);
  }
}

</div>

三、获取字节码文件的成员函数

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class GetClassMethod {
  public static void main(String[] args) throws Exception {
    getMethod_3();
  }

  public static void getMethod_3() throws Exception {
    Class clazz = Class.forName("src.Person");
    Method method = clazz.getMethod("walkInfo", new Class[]{String.class, Integer.TYPE});
    Object obj = clazz.newInstance();
    method.invoke(obj, new Object[]{"小强", Integer.valueOf(20)});
  }

  public static void getMethod_2() throws Exception {
    Class clazz = Class.forName("src.Person");

    // 获取空参数的方法
    Method method = clazz.getMethod("show", (Class[]) null);
    Constructor constructor = clazz.getConstructor(new Class[]{String.class, Integer.TYPE});
    Object obj = constructor.newInstance(new Object[]{"小明", Integer.valueOf(12)});
    method.invoke(obj, (Object[]) null);
  }

  /**
   * 获取指定Class中的公有函数
   */
  public static void getMethod() throws Exception {
    Class clazz = Class.forName("src.Person");

    // 获取的都是类中的公有方法
    Method[] methods = clazz.getMethods();

    // 获取本类中的所有方法
    methods = clazz.getDeclaredMethods();
    Method[] var5 = methods;
    int var4 = methods.length;

    for (int var3 = 0; var3 < var4; ++var3) {
      Method method = var5[var3];
      System.out.println(method);
    }
  }
}

</div>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java使用字节流复制文件的方法
  • java 中如何获取字节码文件的相关内容
  • Java使用字节流复制文件的方法
  • java 中如何获取字节码文件的相关内容

相关文章

  • 2017-05-28Spring Boot(五)之跨域、自定义查询及分页
  • 2017-05-28java异常处理详细介绍及实例
  • 2017-05-28Java类的继承实例详解(动力节点Java学院整理)
  • 2017-05-28java基础中异常及包归纳整理
  • 2017-05-28详解Java中Collections.sort排序
  • 2017-05-28mybatis教程之延迟加载详解
  • 2017-05-28Java Web之限制用户多处登录实例代码
  • 2017-05-28java 中JFinal getModel方法和数据库使用出现问题解决办法
  • 2017-05-28Java中的四种单例模式浅析
  • 2017-05-28详解Spring整合Quartz实现动态定时任务

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Ubuntu快速安装eclipse
    • 探索Java中的equals()和hashCode()方法_动力节点Java学院整理
    • 详解SpringBoot配置devtools实现热部署
    • spring boot整合RabbitMQ(Direct模式)
    • Jsoup解析html实现招聘信息查询功能
    • java实例方法被覆盖,静态方法被隐藏Explain(详解)
    • Java中终止线程的方法详解
    • Java多线程之通过管道线程间通信(字节流、字符流),类ThreadLocal与类InheritableThreadLocal的使用
    • Java数据结构之散列表(动力节点Java学院整理)
    • JavaWeb使用POI操作Excel文件实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有