廖雪峰Java4反射与泛型-3范型-6super通配符
摘要:1.super通配符 1.1super通配符第一种用法 泛型的继承关系 1.2super通配符的第二种用法 2.extends和super的区别 Pair.java Main.java 4.总结:
阅读全文
posted @
2019-02-24 15:49
singleSpace
阅读(250)
推荐(0)
廖雪峰Java4反射与泛型-3范型-5extends通配符
摘要:1.泛型的继承关系: Pair.java 2.extends通配符 2.1extends通配符的第一种用法 2.2extends通配符的第二种用法 3.总结: 使用类似通配符作为方法参数时表示: 方法内部可以调用获取Number引用的方法: n = obj.getXXX() 方法内部无法调用传入Nu
阅读全文
posted @
2019-02-24 15:48
singleSpace
阅读(471)
推荐(0)
廖雪峰Java4反射与泛型-3范型-4擦拭法
摘要:1.擦拭法是Java泛型的实现方式。 编译器把类型视为Object。 泛型代码编译的时候,编译器实际上把所有的泛型类型T统一视为Object类型。换句话说,虚拟机对泛型一无所知,所有的工作都是编译器做的。 编译器根据实现安全的强制转型。 Java的范型实际是有Java在编译时进行的。编译器内容永远把
阅读全文
posted @
2019-02-24 15:47
singleSpace
阅读(440)
推荐(0)
廖雪峰Java4反射与泛型-3范型-3编写泛型
摘要:编写泛型类比普通的类要麻烦,而且很少编写泛型类。 1.编写一个泛型类: 按照某种类型(例如String)编写类 标记所有的特定类型例如String 把特定类型替换为T,并申明 Pair.java Main.java 2.泛型类包含静态方法 注意: 泛型类型不能用于静态方法: 编译错误 编译器无法在静
阅读全文
posted @
2019-02-24 15:32
singleSpace
阅读(297)
推荐(0)
廖雪峰Java4反射与范型-3范型-1什么是泛型
摘要:1.为什么需要泛型? JDK提供了ArrayList,可以看作“可变长度”的数组: 比数组使用方便 示例1:如果使用ArrayList存储String类型: 需要强制转型 不方便,易出错 示例2: 为了解决示例1中的问题,为String单独编写一种ArrayList: 不需要强制转型 编译器强制检查
阅读全文
posted @
2019-02-24 15:22
singleSpace
阅读(278)
推荐(0)
廖雪峰Java4反射与泛型-2注解-3处理注解
摘要:1.处理注解 注解本身对对代码逻辑没有任何影响 SOURCE类型的注解在编译期就被丢掉了 CLASS类型的注解仅保存在class文件中 RUNTIME类型的注解在运行期可以被读取 如何使用注解由工具决定 因此如何处理注解只针对RUNTIME类型的注解 如何读取RUNTIME类型的注解 思路: Ann
阅读全文
posted @
2019-02-19 20:08
singleSpace
阅读(269)
推荐(0)
廖雪峰Java4反射与泛型-2注解-2定义注解
摘要:1.定义注解 使用@interface定义注解Annotation 注解的参数类似无参数方法 可以设定一个默认值(推荐) 把最常用的参数命名为value(推荐) 2.元注解 2.1Target使用方式 使用@Target定义Annotation可以被应用于源码的那些位置 类或接口:ElementTy
阅读全文
posted @
2019-02-19 19:57
singleSpace
阅读(180)
推荐(0)
廖雪峰Java4反射与泛型-2注解-1使用注解
摘要:1.Annotation定义 注解是放在Java源码的类、方法、字段、参数前的一种标签。如下 2.注解的作用: 注解本身对代码逻辑没有任何影响 如何使用注解由工具(如编译器)决定。写了注解,编译器会帮我们检查问题。否则不会检查。 3.使用注意事项 3.1编译器可以使用的注解: @Override:
阅读全文
posted @
2019-02-19 19:56
singleSpace
阅读(324)
推荐(0)
廖雪峰Java4反射与泛型-1反射-4调用构造方法
摘要:1.Class.newInstance()只能调用public的无参数构造方法 2.调用带参数的Constructor Constructor对象包含一个构造方法的所有信息,可以用它来创建一个实例。 如Integer有2个构造方法,1个传入数字,1个传入字符串 Main.java 3.通过Class
阅读全文
posted @
2019-02-01 15:02
singleSpace
阅读(535)
推荐(0)
廖雪峰Java4反射与泛型-1反射-2访问字段Field和3调用方法Method
摘要:2.字段Field 2.1.通过Class实例获取字段field信息: getField(name): 获取某个public的field,包括父类 getDeclaredField(name): 获取当前类的某个field,不包括父类 getFields(): 获取所有public的field,包括
阅读全文
posted @
2019-02-01 14:59
singleSpace
阅读(671)
推荐(0)
廖雪峰Java4反射与泛型-1反射-1Class类
摘要:1.Class类与反射定义 Class类本身是一种数据类型(Type),class/interface的数据类型是Class,JVM为每个加载的class创建了唯一的Class实例。 Class实例包含该class的所有信息,通过Class实例获取class的信息的方法称为反射(Reflection
阅读全文
posted @
2019-02-01 14:58
singleSpace
阅读(404)
推荐(0)
廖雪峰Java3异常处理-2断言和日志-4使用Log4j
摘要:1.Log4j Log4j是目前最流行的日志框架。有两个版本 1.x:Log4j 2.x:Log4j2 "Log4j下载地址https://www.apache.org/dyn/closer.lua/logging/log4j/2.11.1/apache log4j 2.11.1 bin.tar.g
阅读全文
posted @
2019-01-29 20:00
singleSpace
阅读(321)
推荐(0)
廖雪峰Java3异常处理-2断言和日志-3使用Commons Logging
摘要:Commons Logging是Apache创建的日志模块: 可以挂接不同的日志系统 可以通过配置文件指定挂接的日志系统 自动搜索并使用Log4j 如果Log4j不存在,使用JDK Logging(JDK = 1.4) 下载Commons Logging的jar包。导入jar包 "http://co
阅读全文
posted @
2019-01-29 19:59
singleSpace
阅读(327)
推荐(0)
廖雪峰Java3异常处理-2断言和日志-2使用JDK Logging
摘要:1.日志 为了取代System.out.println() 可以设置输出样式 可以设置输出级别,禁止某些级别输出 可以被重定向到文件 可以按包名控制日志级别 2.JDK内置Logging 在java.util.logging,这个日志用的较少。 JDK Logging定义了7个日志级别: SEVER
阅读全文
posted @
2019-01-29 19:58
singleSpace
阅读(241)
推荐(0)
廖雪峰Java3异常处理-2断言和日志-1使用断言
摘要:1.断言 断言Assertion是一种程序调试方式 使用assert关键字 断言条件预期为true 如果断言失败,抛出AssertionError,停止程序 可选的断言消息,断言失败,就会抛出 java public class Main { static double abs(double d){
阅读全文
posted @
2019-01-29 19:57
singleSpace
阅读(405)
推荐(0)
廖雪峰Java3异常处理-1错误处理-4自定义异常
摘要:JDK已有的异常: RuntimeException NullPointerException IndexOutOfBoundsException SecurityException IllegalArgumentException NumberOfFormatException IOExcepti
阅读全文
posted @
2019-01-22 21:03
singleSpace
阅读(594)
推荐(0)
廖雪峰Java3异常处理-1错误处理-3抛出异常
摘要:1.异常的传播 当某个方法抛出异常时: 如果当前方法没有捕获,异常就被抛到上层调用方法 直到遇到某个try...catch被捕获 使用printStackTrace()打印处方法的调用栈 2.抛出异常 创建某个Exception的实例 用throw语句抛出 3.转换异常与持有原有异常 3.1转换异常
阅读全文
posted @
2019-01-22 21:02
singleSpace
阅读(284)
推荐(0)
廖雪峰Java3异常处理-1错误处理-2捕获异常
摘要:1捕获异常 1.1 finally语句保证有无错误都会执行 try{...}catch (){...}finally{...} 使用try...catch捕获异常 可能发生异常的语句放在try{...}中 使用catch捕获对应的Exception及其子类 1.2 捕获多个异常 try{...} c
阅读全文
posted @
2019-01-22 21:01
singleSpace
阅读(226)
推荐(0)