当前位置: 首页 > news >正文

开80服务器怎么做网站会员卡管理系统下载

开80服务器怎么做网站,会员卡管理系统下载,微信小程序外包价目表,上海网站备案注销时间轴: Java反射相关类图解: 反射: 1、什么是 Java 反射 参考: https://xz.aliyun.com/t/9117 Java 提供了一套反射 API ,该 API 由 Class 类与 java.lang.reflect 类库组成。 该类库包含了 Field 、 Me…

时间轴:

Java反射相关类图解:

反射:

1、什么是 Java 反射

参考: https://xz.aliyun.com/t/9117
Java 提供了一套反射 API ,该 API Class 类与 java.lang.reflect 类库组成。
该类库包含了 Field Method Constructor 等类。
对成员变量,成员方法和构造方法的信息进行的编程操作可以理解为反射机制。

2、为什么要用到反射

参考: https://xz.aliyun.com/t/9117
其实从官方定义中就能找到其存在的价值,在运行时获得程序或程序集中每一个类型的成
员和成员的信息,从而动态的创建、修改、调用、获取其属性,而不需要事先知道运行的
对象是谁。划重点:在运行时而不是编译时。(不改变原有代码逻辑,自行运行的时候动
态创建和编译即可)

3、反射机制应用

开发应用场景:
Spring 框架的 IOC 基于反射创建对象和设置依赖属性。
SpringMVC 的请求调用对应方法,也是通过反射。
JDBC Class#forName(String className) 方法,也是使用反射。
安全应用场景:
构造利用链,触发命令执行
反序列化中的利用链构造
动态获取或执行任意类中的属性或方法
动态代理的底层原理是反射技术
rmi 反序列化也涉及到反射操作

演示案例:

Java-反射-Class 对象类获取

Java-反射-Field 成员变量类获取

Java-反射-Method 成员方法类获取

Java-反射-Constructor 构造方法类获取

Java-反射-不安全命令执行&反序列化链

#Java-反射-Class 对象类获取

//1 、根据类名:类名 .class
Class userClass = User.class;
//2 、根据对象:对象 .getClass()
User user = new User();
Class aClass = user.getClass();
//3 、根据全限定类名: Class.forName(" 全路径类名 ")
Class aClass1 = Class.forName("com.example.reflectdemo.User");
//4 、通过类加载器获得 Class 对象:
//ClassLoader.getSystemClassLoader().loadClass(" 全路径类名 ");
ClassLoader clsload=ClassLoader.getSystemClassLoader();
Class aClass2 =
clsload.loadClass("com.example.reflectdemo.User");

演示:

1.创建ReflectDemo

2.删除这三个和子目录

3.创建user:

4.创建成员变量,构造方法,成员方法:

package com.example.reflectdemo;public class User {//成员变量public String name="xiaodi";public int age = 31;private String gender="man";protected String job="sec";//构造方法public User(){//System.out.println("无参数");}public User(String name){System.out.println("我的名字"+name);}private User(String name,int age){System.out.println(name);System.out.println(age);}//成员方法public void userinfo(String name,int age,String gender,String job){this.job=job;this.age=age;this.name = name;this.gender=gender;}protected void users(String name,String gender){this.name = name;this.gender=gender;System.out.println("users成员方法:"+name);System.out.println("users成员方法:"+gender);}}

获取类的4种方法:

//1、根据类名:类名.class

Class userClass = User.class;

//2、根据对象:对象.getClass()

User user = new User();

Class aClass = user.getClass();

//3、根据全限定类名:Class.forName("全路径类名")

Class aClass1 = Class.forName("com.example.reflectdemo.User");

//4、通过类加载器获得 Class 对象:

//ClassLoader.getSystemClassLoader().loadClass("全路径类名");

ClassLoader clsload=ClassLoader.getSystemClassLoader();

Class aClass2 =

clsload.loadClass("com.example.reflectdemo.User");

注意:获取全部路径是复制路径——复制引用

package com.example.reflectdemo;public class GetClass {public static void main(String[] args) throws ClassNotFoundException {//1、根据全限定类名:Class.forName("全路径类名")Class aClass = Class.forName("com.example.reflectdemo.User");System.out.println(aClass);//2、根据类名:类名.classClass userClass = User.class;System.out.println(userClass);//3、根据对象:对象.getClass()User user= new User();Class aClass1 = user.getClass();System.out.println(aClass1);//4、通过类加载器获得Class对象://ClassLoader.getSystemClassLoader().loadClass("全路径类名");ClassLoader clsload=ClassLoader.getSystemClassLoader();Class aClass2 = clsload.loadClass("com.example.reflectdemo1.User");System.out.println(aClass2);}
}

运行结果:

Java-反射-Field 成员变量类获取

利用反射获取变量图解

创建GetFiled:

package com.example.reflectdemo;import java.lang.reflect.Field;public class GetFiled {public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {Class aClass = Class.forName("com.example.reflectdemo.User");//获取公共的成员变量
//        Field[] fields = aClass.getFields();
//        for(Field fd:fields){               //将Fields的值依次给到fd
//            System.out.println(fd);
//        }//获取所有的成员变量
//        Field[] fields = aClass.getDeclaredFields();
//        for(Field fd:fields){
//            System.out.println(fd);
//        }//        //获取单个的公共成员变量
//        Field name = aClass.getField("name");
//        System.out.println(name);
//
//        //获取单个的成员变量
//        Field gender = aClass.getDeclaredField("gender");
//        System.out.println(gender);//获取公共的成员变量age的值User u = new User();Field field=aClass.getField("age");//取值Object a=field.get(u);System.out.println(a);//赋值field.set(u,32);Object aa=field.get(u);System.out.println(aa);}
}

第一个获取公共的成员变量的运行结果:Filed[] getFields():

得到的与User.java中的public下的变量相似

第二个获取所有的成员变量的运行结果:

第三个  1.获取单个的公共成员变量  2.获取单个的成员变量

第四个赋值与获取值:

Java-反射-Constructor 构造方法类获取

获取构造方法图解:

 

创建GetConstructor:

package com.example.reflectdemo;import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;public class GetConstructor {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {Class aClass = Class.forName("com.example.reflectdemo.User");//获取公共的构造方法
//        Constructor[] constructors = aClass.getConstructors();
//        for (Constructor con:constructors){
//            System.out.println(con);
//        }//获取所有的构造方法
//        Constructor[] constructors = aClass.getDeclaredConstructors();
//        for (Constructor con:constructors){
//            System.out.println(con);
//        }//获取单个的公共的构造方法
//        Constructor constructor = aClass.getConstructor(String.class);
//        System.out.println(constructor);
//
//        //获取单个的构造方法
//        Constructor con1 = aClass.getDeclaredConstructor(String.class,int.class);
//        System.out.println(con1);//对构造方法进行操作(两个参数string,int)
//        Constructor con2=aClass.getDeclaredConstructor(String.class,int.class);
//        //临时开启对私有的访问
//        con2.setAccessible(true);
//        User uu=(User) con2.newInstance("xiaodigaygay",40);//System.out.println(uu);//对构造方法进行执行(1个参数strin)
//        Constructor con2=aClass.getConstructor(String.class);
//        con2.newInstance("xiaodigaygay");}
}

第一个获取公共的构造方法

第二个获取所有的构造方法

第三个获取单个的构造方法(公共+私有)

第四个对构造方法进行操作

Java-反射-Method 成员方法类获取

利用反射获取成员方法图解:

创建GetMethod:

package com.example.reflectdemo1;import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class GetMethod {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {Class aClass = Class.forName("com.example.reflectdemo1.User");
//        //获取包括继承的公共成员方法
//        Method[] methods = aClass.getMethods();
//        for(Method me:methods){
//            System.out.println(me);
//        }//获取不包括继承的所有成员方法
//        Method[] methods = aClass.getDeclaredMethods();
//        for(Method me:methods){
//            System.out.println(me);
//        }//获取单个的成员方法
//        Method users = aClass.getDeclaredMethod("users", String.class,String.class);
//        System.out.println(users);//对成员方法进行执行
//        User u = new User();
//        Method users = aClass.getDeclaredMethod("users", String.class,String.class);
//        users.invoke(u,"xiaodigay","gay1");}
}

获取包括继承的公共成员方法

以下为继承的方法

获取不包括继承的所有成员方法

获取单个的成员方法

对成员方法进行执行

Java-反射-不安全命令执行&反序列化链‘

对于反序列化基础就是反射(jdbc(连接数据库),rmi)

package com.example.reflectdemo;import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class GetRunExec {public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {//原生调用 JDK自带的rt.jar//Runtime.getRuntime().exec("calc");//如果是第三方的jar包呢Class aClass = Class.forName("java.lang.Runtime");//获取所有公共包括继承的成员方法
//        Method[] methods = aClass.getMethods();
//        for(Method me:methods){
//            System.out.println(me);
//        }//获取exec成员方法Method exec = aClass.getMethod("exec", String.class);//获取getRuntime成员方法Method getRuntimeMethod = aClass.getMethod("getRuntime");//执行Object runtime = getRuntimeMethod.invoke(aClass);exec.invoke(runtime, "calc.exe");}
}

1.使用原生调用 JDK自带的rt.jar

按住runtime可以查看getRuntime()这个函数的出处

2.使用反射机制来启动计算器

可以使用ctl+F来进行搜索

JAVA反序列化

JAVA反序列化 - Commons-Collections组件 - 先知社区

JAVA反序列化 - 反射机制 - 先知社区

java反序列化验证工具

本文章由李豆豆喵和番薯小羊卷~共同完成!

http://www.yayakq.cn/news/784816/

相关文章:

  • 网站建设网上商城心得体会企业网站排名
  • 动态背景网站网络架构拓扑图
  • 贵州安顺建设局网站成都成立公司
  • 服装网站搭建计划书奉化建设局网站
  • 珠海网站建设 超凡科技织梦网站根目录
  • 网站开发找公司好还是个人wordpress 字体 插件下载
  • 上海网站建设公司案例公司注册地址跟办公地址不一致
  • 广西网站建设产品介绍淄博桓台学校网站建设哪家好
  • 西安知名网站建设公司排名奉贤集团网站建设
  • 下载类网站开发条件灯饰如何做网站推广
  • 广东网站建设专业公司哪家好什么网站做简历比较好
  • jsp小型网站开发景区网站建设案例
  • 网站设计开发工程师广告公司怎么取名
  • 做网站的系统设计免费企业查询
  • 政协网站建设功能珠海专业网站建设
  • 学校网站建设年度总结创意设计公司官网
  • 电子商务网站建设含义包装设计报价明细
  • 网站建设产品服务网页设计与网站开发基础教程
  • 重庆所有做网站的公司排名怎样模仿别人的网站
  • 清丰网站建设费用微信公众平台开发
  • 洛阳做网站汉狮网络北京 企业建网站
  • 宁波高端网站建设公司营销策略方案
  • 济南网站营销昆明高端网站设计
  • 一个网站数据库订制型网站费用
  • 做网站导出用什么色彩模式wordpress 怎么看
  • 怎么做cpa网站宁波seo整站优化
  • 做设计任务的网站网站建设与管理实践心得
  • 网站建设 人和商圈网站做贸易用什么色调比较好
  • 手机如何翻到国外网站品牌的网站建设
  • 阿里云建设网站费用网站企业型类