首页 > 编程语言 >java

java

时间:2024-08-07 20:19:59浏览次数:13  
标签:xml 反射 调用 java 接口 User 方法

类变量

方法区、永久代、元空间的区别

  • 方法区, 是 《JVM 规范》 定义的,所有虚拟机必须有的。

  • PermGen space 则是 HotSpot 虚拟机基于《 JVM 规范》 对 方法区 的一个落地实现。

  • 针对 HotSpot 虚拟机 ,
    JDK7及之前, PermGen space 就是 方法区。
    JDK8及之后, PermGen space 被移除, 换成 Metaspace(元空间),也是对 方法区 的新的实现

异常

处理NullPointerException

​ 使用空字符串""而不是默认的null可避免很多NullPointerException,编写业务逻辑时,用空字符串""表示未填写比null安全得多

断言

​ Java断言的特点是:断言失败时会抛出AssertionError,导致程序结束退出。因此,断言不能用于可恢复的程序错误,只应该用于开发和测试阶段。

jdk8和jdk9新特性

  • 接口中声明的静态方法只能通过接口调用
  • 接口中声明的默认方法可以通过普通方法实现接口调用
  • 类实现了两个接口,而两个接口中定义了同名同参数的默认方法 ,则实现类在没有重写此两个接口的情况下----》会接口冲突
  • 类优先原则—— 子类继承了父类,并实现了接口,父类和接口中声明了同名同参数的方法(默认情况下,子类在没有重写此方法的情况下,调用的是父类中的方法;
  • jdk9 ----接口中可以定义私有方法

反射

反射是框架设计的灵魂

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

Maven

如何配置本工程坐标信息

<!--怎么配置本地工程的坐标信息
	项目:
		groupId: 域名反过来  com.baidu
		artifactId:  项目名:OA
	模块: OA(前台、后台、common)
		groupId:域名反过来  com.baidu.oa
   		artifactID: 模块名
-->
<!--
	设置打包方式 默认为jar包 (聚合工程pom表示不是一个具体包,管理子项目)
 <packaging>war</packaging>
-->
image-20240320203509201

依赖传递

​ 作用访问是provided和test不会传递

<!--
<optional>false</optional>表示不传递
-->
<!-- 排除依赖(添加依赖的不同版本也会覆盖(排除))
<exclusions>
	<exclusion>
  		<groupId></groupId>
  		<artifactId></artifactId>
	</exclusion>
</exclusions>
-->  

聚合工程

聚合工程pom表示不是一个具体包,管理子项目)
pom

模块modules

<modules>
	<module>Projectname</module>
</modules>

maven继承

​ 当采用继承方式groupId,version都会继承父maven

<parent>
	<groupId></groupId>
  	<artifactId></artifactId>
    <version></version>
</parent>

​ 若在父工程中添加的依赖不是全部子工程所需要到(dependencyManagement屏蔽,在需要的项目的xml配置文件中单独覆写,表示继承此依赖(版本自动继承))


<dependencyManagement>
	<dependencies>
    	<dependency>
            
        </dependency>
    </dependencies>
<dependencyManagement>

版本统一管理

<properties>
	<依赖名>版本号</依赖名>
</properties>

再来从dependency中用${}来代替

Spring

在resource中通过xml文件创建对象及其分析

<!--在resource中通过xml文件创建User类对象-->
	<bean id="user" class="com.llc.User(类全路径)"></bean>
<!--然后在从测试类中进行调用-->

package com.llc;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestUser {
    @Test
    public void TestUser(){
        //加载spring配置文件,对象创建
        ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
        //获取创建对象
        User usr=(User)context.getBean("user");
        System.out.println("1"+usr);
        //调用方法
        System.out.println("2");
        usr.add();
    }
}

分析

​ 原理:反射

​ 过程:1加载bean.xml配置文件

​ 2 对xml文件进行解析操作

​ 3获取xml文件bean标签属性值 id属性值和class属性值

​ 4使用反射根据类全路径创建对象

    //反射创建对像
    @Test
    public void testUserproject1() throws Exception {
        //获取类的字节码文件
        Class<?> clazz=Class.forName("com.llc.User");
        //调用方法出创建对象
//        Object o=clazz.newInstance();
        User user = (User) clazz.getDeclaredConstructor().newInstance();
        System.out.println(user);
    }

postman

请求和响应

1 简单参数 image-20240709155621709

2 实体参数

image-20240709162157482

3数组集合参数

image-20240709165101771

标签:xml,反射,调用,java,接口,User,方法
From: https://www.cnblogs.com/pigsun/p/18347820

相关文章

  • java反射机制
    反射的原理Java反射机制概述JavaReflection(1)Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。(2)加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Cl......
  • Nginx反向代理,代理H5前端 ,java后端,使用服务器+finalshell+vpn
    使用前确认已经安装好nginx,这里我使用的是普通的nginx,注意不是Docker版本的nginx输入nginx-t查询一下,自己的nginxconfig.nginx在那个包下,方便查询 使用catnginx.conf命令,进入需要配置的conf中(这个是我使用的server[server{listen82;s......
  • [Javascript] Proper Tail Calls
    Docs:https://webkit.org/blog/6240/ecmascript-6-proper-tail-calls-in-webkit//*ThisisarecursivefunctionwithoutPTC*/functionfatorial(n){if(n===0){return1}else{returnn*fatorial(n-1)}}console.log(fator......
  • 是你的java二叉树啊啊啊
    1.二叉树的最大深度问题:计算二叉树的最大深度(或高度)。Java实现:publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx){val=x;}}publicclassSolution{publicintmaxDepth(TreeNoderoot){if(root==......
  • JavaSE基础知识分享(三)相关练习题
    写在前面大家前面的面向对象部分学的怎么样了,快来看看这些题你能不能快速地写出答案,面向对象在Java中是非常重要的,快来检测你的薄弱点在哪,及时查漏补缺!使用面向对象思想编写下列题目:1.使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心情,名字;方法包括:叫,跑。......
  • [Java基础]内存泄漏和内存溢出
    在Java中,内存泄漏(MemoryLeak)和内存溢出(MemoryOverflow)是两种不同的内存管理问题。内存泄漏(MemoryLeak):内存泄漏指的是程序在运行过程中,因为某些原因导致不再使用的对象仍然被保留在内存中,无法被垃圾回收器回收。这些对象会占用内存空间,导致系统的可用内存不断减少,最终可......
  • Java--构造器和构造方法
    目录构造方法注意事项一个类里面写了构造器,手动添加参数,若没有构造器直接运行构造方法是一种特殊的方法,为了创建对象功能:完成对象数据的初始化而带参构造的本质是创建对象的同时,趁机完成赋值修饰符class类名{public方法名(与类名一致)(参数){}}注意事项1.如果没有定义......
  • Java--类
    目录1.定义2.成员变量与局部变量1.定义对一类具有共同属性和行为事物的描述在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class),一个类是对一类对象的描述。类是构造对象的模板,对象是类的具体实例属性:成员变量注意:加修饰词调用的时候应该使用set......
  • java httpclient发送中文乱码
    在使用Java的HttpClient发送请求时,如果遇到中文乱码问题,通常需要确保请求和响应的字符集都正确设置为UTF-8。以下是一些解决方法:指定请求数据的字符集为UTF-8格式:在使用UrlEncodedFormEntity或StringEntity时,确保传递正确的字符集参数。例如:StringEntityentity=newUrlEnco......
  • Java并发编程——线程创建的4种常见方式
    文章目录一、继承Thread类创建创建线程类1.1Thread类解析1.2使用方法1.3优缺点二、实现Runable接口创建线程类2.1Runable接口解析2.2使用方法2.3优缺点三、使用Callable和FutureTask创建线程3.1Callable接口解析3.2RunnableFuture接口解析3.3Futu......