反射,如何把.java文件转化为.class文件

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

所以说:任何类或对象在反射面前都是裸体

详情:

try {

Class forName = Class.forName("com.facebook.entity.Student"); //获得类名,这是写前提条件,获得class文件

try {

// Constructor con = forName.getConstructor(); //括号里有null

// //通过反射来实例化这个对象,这里等同于实例化了一个Student StudentStudent s=new Student();

// Object object = con.newInstance();

// System.out.println(object+"100");

//获取单个私有构造,这里是获得带2个参的私有构造,

// Constructor con = forName.getDeclaredConstructor(int.class,String.class);

///通过暴力反射,去除私有

// con.setAccessible(true);

// //通过反射来实例化这个对象,这个参数是具体的类型,获取构造方法后,这一步是创建对象赋值,

// Object object = con.newInstance(2,"zhang");

// System.out.println(object);

//获得属性

//获得所有公有属性

// Field[] fields = forName.getFields();

// for (int i = 0; i < fields.length; i++) {

// System.out.println(fields[i]+"100");

// }

//获取所有属性,包括私有

// Field[] f = forName.getDeclaredFields();

// for (int i = 0; i <f.length; i++) {

// System.out.println(f[i]+"100");

// }

//获得单个公有有的属性,传递的参数就是你要获取的属性的名字

// try {

// Field field = forName.getField("name");

//

// //给属性赋值(1.产生一个对象,2.赋值)

// Object obj = forName.getConstructor().newInstance();

//

// //第一个参数是你要赋值的对象,第二个是你要赋的值

// field.set(obj, "zhang2");

// Student s=(Student)obj;

// System.out.println(s+"100");

// } catch (NoSuchFieldException e) {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }

//获取私有单个属性,步骤和上面一样,私有的多了一个暴力反射

// try {

// Field ff = forName.getDeclaredField("id");

// Object obj = forName.getConstructor().newInstance();

// ff.setAccessible(true);

// ff.set(obj, 123); //暴力反射

// Student s=(Student)obj;

// System.out.println(s+"100");

// } catch (NoSuchFieldException e) {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }

//获取所有公有的方法,因为是所有,所以返回的是数组,要遍历

// Method[] methods = forName.getMethods();

// for (int i = 0; i < methods.length; i++) {

// System.out.println(methods[i]);

// }

//获得所有公有和私有的方法,所以返回的是数组,要遍历

// Method[] m= forName.getDeclaredMethods();

// for (int i = 0; i < m.length; i++) {

// System.out.println(m[i]);

// }

//获得单个公有的方法,并调用

// Method m = forName.getMethod("show");

// //产生一个对象

// Object obj3 = forName.getConstructor().newInstance();

// Object invoke3 = m.invoke(obj3,null);

// System.out.println(invoke3+"100");

//获得单个私有的方法,并调用

Method m2 = forName.getDeclaredMethod("show1",String.class); //第一个参数是方法名,第二个参数是方法后面参数类型

Object obj = forName.getConstructor().newInstance();

m2.setAccessible(true);

Object invoke = m2.invoke(obj, "22");

System.out.println(invoke+"123456");

List<String> list=new ArrayList<String>(); //现在规定只能传字符串

list.add("aa");

list.add("bb");

Class class1 = list.getClass(); //利用反射可以忽略泛型,利用泛型可以传其他类型数据

Method m1 = class1.getMethod("add", Object.class);

m1.invoke(list, 113);

for (Object string : list) { //这里要改成object

System.out.println(string);

}

Java基础重要知识点-反射的更多相关文章

  1. Java 基础常见知识点&面试题总结(下),2022 最新版!

    你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,同步一下最新更新,希望能够帮助你. 前两篇: Java 基础常见知识点&面试题总结(上),2022 最新版 ...

  2. 黑马程序猿————Java基础日常笔记---反射与正則表達式

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...

  3. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  4. Java基础教程:反射基础

    Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...

  5. Java 基础常见知识点&面试题总结(中),2022 最新版!| JavaGuide

    你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 上篇:Java 基础常见知识点&面试题总结(上),2022 最新 ...

  6. Java基础面试知识点总结

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  7. 学习Spring必学的Java基础知识(1)----反射(转)

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  8. 学习Spring必学的Java基础知识(1)----反射

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  9. Java基础学习(1)——反射

    反射就是把Java类中的各种成分映射成相应的Java类(主要用于框架开发) 反射的基石–>Class类 Java程序中的各个类属于同一事物,描述这类事务的Java类名就是Class. Class ...

随机推荐

  1. thinter中lable标签控件(二)

    lable控件 对于tkinter来说,学起来很简单,只要设置好相应的参数即可出结果,所以不用刻意去记住这些参数.学习一遍后理解每个参数的作用是什么即可. 当下次用到的时候来笔记上看一下就行. 内容很 ...

  2. java 基础之 反射技术

    1. java代码 在 java 语言中最核心的就是代码的运行, 按照面向对象的思想,在调用java代码时往往需要先创建对象,再调用方法, 而写在方法中的即所谓的java 代码 一段java代码在程序 ...

  3. latex中长公式换行,很好的办法

    今天在编辑公式时,有一个公式很长,写到一行就出去了.当时之前换行都是方程组或者在括号完之后换,都没有问题.但是今天我也换行的是在括号中间断开.这样出现问题,编辑的时候会出错误提醒.上网查了一些论坛,也 ...

  4. 7. 整合shiro,搭建粗粒度权限管理

    shiro是一个易用的权限管理框架,只需提供一个Realm即可在项目中使用,本文就将结合上一篇中搭建的权限模块.角色模块和用户模块来搭建一个粗粒度的权限管理系统,具体如下:1. 添加shiro依赖和与 ...

  5. Ubuntu配置SecureCRT登录

    1. 命令行切换到root用户 备注:ubuntu默认root用户没有设置密码,切换需要首先设置密码 sudo passwd root 按照提示输入当前用户密码 按照提示输入要设置的root用户密码 ...

  6. git本地克隆时失败: SSL certificate problem

    问题描述 将git包在本地克隆时出现这个错误. 解决办法 找到.gitconfig文件,在http项添加 sslVerify = false. 注: 上面这个是针对单一库的,如果希望对所有库都关闭ss ...

  7. map和flatmap的区别+理解、学习与使用 Java 中的 Optional

    转自:map和flatmap的区别 对于stream,   两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为n ...

  8. I/O----复制文本文件

    文件 "我的青春谁做主.txt" 位于 D 盘根目录下,要求将此文件的内容复制到 C:/myPrime.txt 中. package io.day03; import java.i ...

  9. C++中char类型的溢出问题

    C++中什么经常会运用到char类型,也会将char类型作为循环语句的循环条件,但往往这里最容易出现错误,容易出现溢出,进入死循环.这里我们就来简单介绍下为什么会出现这种情况. 首先,了解下char类 ...

  10. python黑科技:还在为没有wifi而烦心吗?这篇文章解决你的困扰

    python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于解决问题而不是去搞明白语言本身.Python虽然是基于C语言编写,但是 ...