object

Java编程的逻辑 (84) - 反射

青春壹個敷衍的年華 提交于 2020-03-01 19:13:02
上节介绍完了并发,从本节开始,我们来探讨Java中的一些动态特性,包括反射、类加载器、注解和动态代理等。利用这些特性,可以以优雅的方式实现一些灵活和通用的功能,经常用于各种框架、库和系统程序中,比如: 在63节介绍的实用序列化库Jackson,利用反射和注解实现了通用的序列化/反序列化机制 有多种库如Spring MVC, Jersey用于处理Web请求,利用反射和注解,能方便的将用户的请求参数和内容转换为Java对象,将Java对象转变为响应内容 有多种库如Spring, Guice利用这些特性实现了对象管理容器,方便程序员管理对象的生命周期以及其中复杂的依赖关系 应用服务器比如Tomcat利用类加载器实现不同应用之间的隔离、JSP技术也利用类加载器实现修改代码不用重启就能生效的特性 面向方面的编程(AOP - Aspect Oriented Programming)将编程中通用的关注点比如日志记录、安全检查等与业务的主体逻辑相分离,减少冗余代码,提高程序的可维护性,AOP需要依赖上面的这些特性来实现 本节先来看反射机制。 在一般操作数据的时候,我们都是知道并且依赖于数据的类型的,比如: 根据类型使用new创建对象 根据类型定义变量,类型可能是基本类型、类、接口或数组 将特定类型的对象传递给方法 根据类型访问对象的属性,调用对象的方法 编译器也是根据类型,进行代码的检查编译。

java objects类 api

时间秒杀一切 提交于 2020-03-01 17:32:44
目录 api 第一章 Object类 ## 1.1 概述 ## 1.2 toString方法 ### 方法摘要 ### 覆盖重写 ## 1.3 equals方法 ### 方法摘要 ### 默认地址比较 ### 对象内容比较 ## 1.4 Objects类 第一章 Object 类 ## 1.1 概述 ` java.lang.Object ` 类是 Java 语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是 Object 。 如果一个类没有特别指定父类, 那么默认则继承自 Object 类。例如: public class MyClass /*extends Object*/ { // ... } 根据 JDK 源代码及 Object 类的 API 文档, Object 类当中包含的方法有 11 个。今天我们主要学习其中的 2 个: * ` public String toString() ` :返回该对象的字符串表示。 * ` public boolean equals(Object obj) ` :指示其他某个对象是否与此对象 “ 相等 ” 。 ## 1.2 toString 方法 ### 方法摘要 * ` public String toString() ` :返回该对象的字符串表示。 toString

JDK动态代理使用实例

核能气质少年 提交于 2020-03-01 14:31:26
1. 创建业务接口,包含着业务对外可以提供的功能,也就包含着被代理的内容。 public interface Userservice { /** * 目标方法 */ public abstract void add(); } 2.创建业务接口实现类 public class UserServiceImpl implements Userservice { public void add() { System.out.println("---------add-----------"); } } 3.创建自定义InvocationHandler,用于对接口提供的方法进行增强。 public class MyInvocationHandle implements InvocationHandler { /** * 持有目标对象 */ private Object target; /** * 构造方法 * @param target */ public MyInvocationHandle(Object target) { super(); this.target = target; } /** * 执行目标的方法 * @param proxy * @param method * @param args * @return * @throws Throwable */ public

spring AOP 实现方式1

牧云@^-^@ 提交于 2020-03-01 13:18:01
IUserService.java package com.qfwh.app01; import java.util.List; public interface IUserService<T> { /*** * 获取 * */ List<T> getAllUser(); /** * 保存用户 */ Boolean saveUser(T user); /** * 删除 * */ boolean deleteUser(int uid); /** * 跟新 */ boolean updateUser(T obj); } UserServiceImpl.java package com.qfwh.app01; import java.util.ArrayList; import java.util.List; public class UsrServiceImpl implements IUserService { @Override public List<Object> getAllUser() { System.out.println("----------getAllUser--------------"); return new ArrayList<>(); } @Override public Boolean saveUser(Object user) { System

注解+反射+JDBC,实现一个简易的泛型DAO接口

↘锁芯ラ 提交于 2020-03-01 13:13:06
一、实现思路 1、定义3个Annotation(注解):Entity、Id、Column,Entity作用于Type级别,用于标识JavaBean与数据库表名的映射关系。Id作用于Field级别,用于标识JavaBean中ID属性与表中ID字段的映射关系,Column作用于Field级别,用于标识JavaBean中除ID属性外的其它属性与表中字段的映射关系。 2、在Dao实现类中,通过反射API获得JavaBean中注解和属性的信息,如:表名、字段。JavaBean属性的名称、数据类型等信息。然后将这些信息拼接成一条SQL语句,通过JDBC的方式与数据库交互。 二、示例代码 1、定义一个Dao公共类,提供获得数据库连接与释放数据库资源的接口 package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 提供获取数据库连接、释放资源的接口 */ public class JdbcDaoHelper { /** * 数据库用户名 */ private static final String USER =

python-正则表达式

好久不见. 提交于 2020-03-01 11:54:42
1.匹配指定字符 # [] 原子表,存储表达式、字符集合 pattern = re.compile('[a]') # 参数写成a-c 则是匹配以abc任意一个字母,a-z匹配任意一个小写字母,写成[a][b]则是匹配ab # 匹配一个汉字[\u4e00-\u9fa5] pattern1 = re.compile('[b]') result = pattern.match('baa') result1 = pattern1.match('baa') print(result) # 输出结果:None print(result1) # 输出结果:<re.Match object; span=(0, 1), match='b'> 2.“^” # “^” 在原子表外,表示包含;在原子表内,表示除了什么之外 pattern = re.compile('^a[a-zA-Z0-9]') # 判断是不是已一个a和一个字母或者数字开头 result = pattern.match("a0a") print(result) # # 输出 <re.Match object; span=(0, 2), match='a0'> # 如果以字母或者数字开头则返回None pattern = re.compile('[^a-zA-Z0-9]') result = pattern.match('a.a')

2020-02-29

时光毁灭记忆、已成空白 提交于 2020-03-01 10:48:44
微信小程序API获取当前位置 获取位置 (wx.getLocation (OBJECT) ) 获取当前的地理位置、速度。 OBJECT参数说明: gcj02表示的是中国测标的定位方式;wgs84表示的是全球定位系统。 查看位置 wx.chooseLocarion(OBJECT) 打开地图选择位置。 OBJECT参数说明: success参数说明: wx.openLocation(OBJECT) 使用微信内置地图查看位置。 OBJECT参数说明: 需要自己拖动地图,然后选择发送。 来源: CSDN 作者: 半斩浮生 链接: https://blog.csdn.net/weixin_46398053/article/details/104578185

全面理解Javascript中Function对象的属性和方法

谁说胖子不能爱 提交于 2020-03-01 10:28:34
函数是 j ava Script 中的基本数据类型,在函数这个对象上定义了一些属性和方法,下面我们逐一来介绍这些属性和方法,这对于理解javascript的继承机制具有一定的帮助。 属性(Properties) arguments 获取当前正在执行的 Function 对象的所有参数,是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表(length),而且不能显式创建 arguments 对象。下面的Sample说明了这些性质。 复制代码 function testArg(a, b) { var actCount = arguments.length, expCount = testArg.length, result; result = "Expected arguments' count is " + expCount + ";<br/>"; result += "Actual arguments' count is " + actCount + ".<br/>"; result += "They are:<br/>"; for (var i = 0; i <

javascript简要理解DOM

天大地大妈咪最大 提交于 2020-03-01 08:36:30
DOM 是Document Object Model( 文档对象模型 )的缩写。 DOM是把html里面的各种数据当作对象进行操作的一种思路。 比如一个超链,作为一个DOM对象,就可以使其隐藏,修改其href指向的地址。 节点概念 DOM把所有的html都转换为节点 整个文档 是一个节点 元素 是节点 元素属性 是节点 元素内容 是节点 注释 也是节点 如本例 通过document.getElementById获取了id=d1的div标签对应的元素节点 然后通过attributes 获取了该节点对应的属性节点 接着通过childNodes获取了内容节点 hello HTML DOM 文档节点 [ object HTMLDocument ] 元素 [ object HTMLDivElement ] 属性节点 [ object Attr ] 内容节点 [ object Text ] < html > < body > < div id = "d1" > hello HTML DOM < / div > < / body > < script > function p ( s ) { document . write ( s ) ; document . write ( "<br>" ) ; } var div1 = document . getElementById ( "d1" )

java中==与equel的区别

拜拜、爱过 提交于 2020-03-01 04:53:12
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是2个对象的地址,而equals比较的是2个对象的内容。 显然,当equals为true时,==不一定为true; 一、String中的equals和== 1、 public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = "Monday"; } } 上面这段程序中,到底有几个对象呢? 来检测一下吧,稍微改动一下程序 public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = "Monday"; if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); } } 编译并运行程序