JavaEE企业开发新技术

2024-03-09 03:20
文章标签 java 技术 企业 ee 开发新

本文主要是介绍JavaEE企业开发新技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

2.1  Class对象基本概念

1、概念

2.2 Class对象的获取方式

2.3基本数据类型的Class对象

1、概念

2.4 反射的基本概念

概念

2.5 Class对象的基本使用-1

2.6 Class对象的基本使用-2

newInstance()和new()区别:


2.1  Class对象基本概念

1、概念

反射的基础——Class

Java当中的类用来表示具有相同属性和方法的对象的结合,是抽象的概念。对象是类创建的,同一个类的不同对象具有不同的属性价值

Java当中定义的所有类都属于同一类事物,可以用Class来表示

Class类的对象就是不同的类对应的字节码

获取Class对象:

A a=new A()

获取Class对象的三种方式

  1. 创建对象,通过对象名调用getClass拿到Class对象

Person p1=new Person();

P1.getClass();

  1. 直接通过类名.Class拿到Class对象

Person.class

  1. Class.forName()方法

Class.forName(“java.lang.String”)

2、示例代码

public class Person {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Person(Integer id,String name) {super();this.id=id;this.name=name;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + "]";}public Person() {super();}}

  

public class Test {public static void main(String[] args) throws ClassNotFoundException{Person p = new Person();Class clazz1=p.getClass();Class clazz2=Person.class;System.out.println(clazz1);System.out.println(clazz2);Class clazz3=Class.forName("cn.edu.xync.myweb.reflect.Person");System.out.println(clazz3);}}

2.2 Class对象的获取方式

  1. 通过对获取Class对象的三种方式的实现,了解到,对同一个类来讲,不管用哪种方式获取Class对象,获取到的Class对象是唯一的,满足单例模式。
  2. 源码:
public class Test {public static void main(String[] args) throws ClassNotFoundException{Person p = new Person();Class clazz1=p.getClass();Class clazz2=Person.class;System.out.println(clazz1==clazz2);Class clazz3=Class.forName("cn.edu.xync.myweb.reflect.Person");Class clazz4=Class.forName("cn.edu.xync.myweb.reflect.Person");System.out.println(clazz3==clazz4);}}

2.3基本数据类型的Class对象

1、概念

java从大的方面分类,一个是基本数据类型,一个是复合数据类型,java当中的基本数据类型有:boolean  int  short  byte  char  long  float 和 double 它们也有各自的Class对象

例如:int.class

void也有自己对于的Class对象(void.class)

基本数据类型对应的封装类有属性TYPE(常量),这个属性代表了封装类所封装的基本数据类型的Class对象。

Int.class==Integer.TYPE

void.class==Void.TYPE

代码

System.out.println(int.class==Integer.TYPE);System.out.println(boolean.class==Boolean.TYPE);System.out.println(float.class==Float.TYPE);System.out.println(void.class.getName());

//表示对应数据类型的封装类可以表示基本数据类型的Class对象

2.4 反射的基本概念

  1. 概念

反射就是把java类中的各个组成部分映射成相应的java类

一个类的组成部分包括:属性、方法、构造方法、包等,这些组成部分都会被映射成相应的类。

Class类定义了一系列方法来获取java类的属性、方法、构造方法、包等信息,这些信息都有相应的来表示,分别是Field、Method、Constructor、Package等。

java.lang.Class:代表一个类

java.lang.reflect.Method:代表类的方法

java.lang.reflect.Field:代表类的成员变量

java.lang.reflect.Constructor:代表类的构造器

注意:表示java类组成部分的各种类位于java.lang.reflect包

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

当要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。

通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。

2.5 Class对象的基本使用-1

要进行反射操作必须要拿到这个类对应的Class对象

Class clazz3=Class.forName("cn.edu.xync.myweb.reflect.Person");Class clazz4=Class.forName("cn.edu.xync.myweb.reflect.Person");Package p=clazz3.getPackage();System.out.println(p.getName());Constructor con1=clazz3.getConstructor();//得到构造方法System.out.println(con1.getName());//拿到构造方法的名称Person person1=(Person) con1.newInstance();//通过无参构造方法创建对象1System.out.println(person1);Person person2=(Person) con1.newInstance();//通过无参构造方法创建对象2System.out.println(person2);

通过构造方法创建的两个对象的hash code编码是不一样的说明是创建了两个不同类型的对象

本次主要学习了通过反射如何得到包的信息,和得到对应的构造方法的信息

2.6 Class对象的基本使用-2

一个类可能会定义多个重载的构造方法,当定义有参构造时,在创建对象时可以加入参数

Class clazz3=Class.forName("cn.edu.xync.myweb.reflect.Person");Class clazz4=Class.forName("cn.edu.xync.myweb.reflect.Person");Package p=clazz3.getPackage();System.out.println(p.getName());Constructor  con3=clazz3.getConstructor(Integer.class,String.class);//得到一个带有参数的构造方法(通过反射的方式创建)Person p3=(Person)con3.newInstance(100,"小明");//创建对象并传入参数System.out.println(p3);

Constructor<Person>[] con=clazz3.getConstructors();for(Constructor con4:con) {System.out.println(con);}//通过Constructors可以得到Person类中的所有构造方法,再通过for循环来遍历输出每个构造方法

newInstance()和new()区别:

  1. 两者创建对象的方式不同,前者是实用类的加载机制,后者则是直接创建一个类。
  2. newInstance创建类是这个类必须已经加载过且已经连接,new创建类是则不需要这个类加载过

3、new是一个关键字;而newInstance是Class类中的一个方法,并且应用到了反射机制,相当于逆向创建对象,而new则是顺序创建对象。

这篇关于JavaEE企业开发新技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/789413

相关文章

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.