1首先认识什么叫反射

  正常的情况下,我们操作一个对象,则必须找到这个对象对应的类,然后实例化,然后再做各种操作,

   反射的则通过一个对象获取对应的类,然后实例化,然后做各种操作,

2反射的操作步骤

  I获取到Class类

  ①Object.class

  System.out.println(Bean.class.getName());

  ②object.class

Bean bean=new Bean();
System.out.println(bean.getClass().getName());

  ③Class.forName("全类名")

Class<?> cls = Class.forName(bean.getClass().getName());
System.out.println(cls.getName());

  2实例化Class.newInstance();

Class<?> cls = Class.forName(bean.getClass().getName());
System.out.println(cls.getName());
Bean bean= (Bean)cls.newInstance();
System.out.println(newInstance.sayHello("test"));

  3取得对应的方法并操作

  ①获取方法

//1---先获取到方法,而且也要把对应的参数类型写上
Method method = cls.getMethod("sayHello",String.class);

  ②执行方法

//2执行取到的方法,并传递参数
Object invoke =(String)method.invoke(cls.newInstance(), "test2");
//3获取返回值
System.out.println(invoke);

  4取得对应属性并操作

  ①获取属性

//操作属性
Field fieldname=cls.getDeclaredField("name");

②操作属性

fieldname.setAccessible(true);
fieldname.set(bean, "jeremy");
System.out.println(bean.getName());
//因为要设置属性可见,也就是没权限言,所以一般不建议使用

  使用setter和getter方法来操作

//操作属性
Method setMethod=cls.getMethod("setName", String.class);
setMethod.invoke(bean, "ssss");
System.out.println(bean.getName());

javase---Java反射操作的更多相关文章

  1. [javaSE] java获取文件列表

    递归测试 import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis ...

  2. Java反射操作成员变量 Class can not access a member with modifiers "*"

    fields[j].set(obj, val); 报: Exception in thread "main" java.lang.IllegalAccessException: C ...

  3. JavaSE: Java 5 新特性

    Java5新特性 1.Java 语言 1.1 Generics 1.2 foreach 1.3 自动拆箱装箱 1.4 enum 1.5 可变参数 varargs 1.6 static import 1 ...

  4. [javaSE] java上传图片给PHP

    java通过http协议上传图片给php文件,对安卓上传图片给php接口的理解 java文件: import java.io.DataOutputStream; import java.io.File ...

  5. java反射操作类方法与属性

    package com.fanshe.test; public class User { private int age; private String email; private String u ...

  6. JavaSE——Java对象导论

    一.抽象过程 人们所能够解决问题的复杂性直接取决于抽象的类型和质量.所谓抽象的类型指的是抽象的是什么,汇编语言是对底层机器的轻微抽象,命令式语言(FORTRAN.BASIC.C)是对汇编语言的抽象.这 ...

  7. JavaSE复习日记 : java包机制

    这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; ...

  8. Java,来源于大神

    也许你学习了那么久的Java了,但如果有人问你什么是JavaEE?你会怎么回答他呢?在此我来谈谈关于JavaEE的相关技术.(仅是个人见解) 在谈JavaEE时,我们首先来了解一下Java平台.目前, ...

  9. javaSE学习路线

    Java SE大致可分为以下几块内容: n  对象导论:如何用面向对象的思路来开发 n  深入JVM:Java运行机制以及JVM原理 n  面向对象的特征:封装.继承.抽象.多态 n  数组和容器:容 ...

  10. 第一周:Java基础知识总结(1)

    1.软件开发的基本步骤: 1.分析问题,建立数据模型. 2.确定数据结构类型和算法. 3.编写程序. 4.调试程序. 2.Java语言 Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移 ...

随机推荐

  1. Deep Learning 经典网路回顾#之LeNet、AlexNet、GoogLeNet、VGG、ResNet

    #Deep Learning回顾#之LeNet.AlexNet.GoogLeNet.VGG.ResNet 深入浅出——网络模型中Inception的作用与结构全解析 图像识别中的深度残差学习(Deep ...

  2. 【转】【Asp.Net】ASP.Net Response.ContentType 详细列表

    不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 text/html 也就是网页格式. 代码如: <% response.ContentType =&quo ...

  3. Apache HttpComponents 学习

    基本上,用户常用的就是HttpClient:它基于Http Core部分,但 Core部分太过于 low level,不建议使用,除非有特殊需要. Apache HttpComponentsTM 项目 ...

  4. 第三百一十四节,Django框架,自定义分页

    第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...

  5. Ubuntu下启动/重启/停止apache服务器

    Task: Start Apache 2 Server /启动apache服务# /etc/init.d/apache2 startor$ sudo /etc/init.d/apache2 start ...

  6. JS中setInterval、setTimeout不能传递带参数的函数的解决方法

    setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数 function t ...

  7. linux -- ubuntuserver 安装Apache后,修改默认目录和分布式配置文件可执行

    装了apache后,访问出现The requested URL *** was not found on this server,查看了下/etc/httpd/conf/httpd.conf,发现原因 ...

  8. linux -- chown修改文件拥有者和所在组

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  9. Python 爬虫批量下载美剧 from 人人影视 HR-HDTV

    本人比較喜欢看美剧.尤其喜欢人人影视上HR-HDTV 的 1024 分辨率的高清双字美剧,这里写了一个脚本来批量获得指定美剧的全部 HR-HDTV 的 ed2k下载链接.并依照先后顺序写入到文本文件, ...

  10. Kafka学习之一深度解析

    背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐 ...