独自登高楼 望断天涯路

学lucene 学hadoop,Google/baidu搜:“独自登高楼”,进入本博客

java实现golang类似的chan

java版本的CSP操作 public class Chan<T> { private T message; private boolean empty = true; ...

2018-11-12 14:52:26

阅读数 205

评论数 0

java遗珠之try-with-resources

try-with-resources语句自动关闭实现了AutoCloseable或者 Closeable接口的资源,示例如下: public static void writeToFileZipFileContents(String zipFileName, String outputFileNa...

2018-10-15 15:53:38

阅读数 125

评论数 0

java遗珠之多异常

catch可以同时捕获多个异常,示例如下: public void writeList() { // The FileWriter constructor throws IOException, which must be caught. PrintW...

2018-10-15 14:33:56

阅读数 87

评论数 0

java遗珠之异常种类

异常总共分三种 已检查异常,比如java.io.FileNotFoundException 错误,java.io.IOError 运行时异常,NullPointerException 错误和运行时异常又统称为未检查异常 已检查异常必须被处理或者throws,未检查异常不需要。 但要注意的是未检...

2018-10-13 21:25:55

阅读数 47

评论数 0

java遗珠之泛型七大限制

泛型的七大限制: 不能使用原始类型实例化泛型类型 参数化类型如下: public class OrderedPair<K, V> implements Pair<K, V&...

2018-10-12 17:39:53

阅读数 36

评论数 0

java遗珠之泛型不可靠类型

不可靠类型 可靠类型是在运行时包含所有完整信息的类型,包括原始类型,非泛型类型,原生类型和无边界通配符的调用。 不可靠类型是编译时类型擦除移除了一些信息,比如不是无边界通配符的其他情况。一个不可靠类型在运行时没有完整可用的信息, 堆污染 当参数化的变量引用不是该参数化类型的时候就会产生堆污染,如果...

2018-10-12 16:09:03

阅读数 40

评论数 0

java遗珠之泛型类型擦除

擦除规则 泛型的作用之前已经介绍过了只是用于编译之前更为严格的类型检查,其他的一些特性也都是编译之前的,在编译之后泛型是会被擦除掉的。 类型擦除所做的事情如下: 如果是无界限的则会把类型参数替换成Object,如果是有界限的则会把类型参数替换为界限类型。 插入一些类型转换来保证类型安全 为了保证...

2018-10-12 12:19:27

阅读数 36

评论数 0

java遗珠之泛型通配符

我们在之前说过明确指定了泛型类型的参数之后,会把参数限制的很严格,通配符的作用就是放宽这种限制,有上限有界通配符<? extends A>,下限有界通配符<? extends B&gt...

2018-10-11 11:49:11

阅读数 70

评论数 0

java遗珠之泛型类型推断

类型推断 类型推断是java编译器的一种能力,通过查看方法调用和相应的声明来决定什么样的类型参数或者参数是更为合理的调用。 推断算法先确定参数的类型,分配结果或者返回的类型,最终推断算法查找适合所有参数最适合的类型。 为了说明这点,来看下面的例子: public class Util { ...

2018-10-10 10:35:56

阅读数 131

评论数 0

java遗珠之泛型继承

当给定两个具体的类型A和B,MyClass<A>和MyClass<B>没有任何关系,不管A和B是什么关系。 你可以通过扩展泛型类或者实现泛型接口的 interface Pay...

2018-10-09 20:29:44

阅读数 39

评论数 0

java遗珠之泛型多边界

泛型的类型参数可以有多个边界 <T extends B1 & B2 & B3> 当其中一个边界是class的时候需要写在前面。 class A { /* ... */ } interface B { /...

2018-10-09 10:07:17

阅读数 67

评论数 0

gradle增加编译java的参数

有时候需要更改java的编译参数,如果会groovy的话很容易就可以通过java插件的源码写出相应的配置 compileJava { options.compilerArgs << "-Xlint:u...

2018-10-08 19:12:28

阅读数 271

评论数 0

java遗珠之泛型的作用

泛型总共有三个作用 编译时进行更强大的类型检查 编译时错误比运行时错误更好发现和处理 消除类型转换 List list = new ArrayList(); list.add("hello"); String s = (String) list.get(...

2018-10-08 16:07:11

阅读数 44

评论数 0

java遗珠不做多继承的原因

类和接口一个显著的区别就是类有字段,而接口没有,如果多继承的两个超类有同样的字段,或者对同字段进行操作,那设计上就会很很混乱,再比如有同样的方法,给超类增加一个方法,还要考虑其他超类会不会重名,这无疑增大了coder的负担。 但是多接口就不会,因为没有字段,因此处理上就简单很多,遇到同名的方法按照...

2018-09-30 09:40:58

阅读数 52

评论数 0

java遗珠之接口方法

接口中的默认方法和抽象方法像示例方法一样可以被继承,当类的超类或者接口提供多个相同签名的默认方式时,java编译器就会用继承规则来解决命名冲突,这些规则遵循两个原则。 实例方法优先于接口默认方法 看下面的例子 class Horse { public String identifyMyse...

2018-09-29 19:50:01

阅读数 49

评论数 0

java遗珠之接口默认方法

默认方法 因为设计接口的时候不可能总是面面俱到,不用更改的。当接口需要增加一些方法的时候,那么实现接口的类就必须要重写来实现它,但是如果增加的功能仅仅通过接口原来的方法调用就可以实现的话,那么这种影响就更为多余,这正是默认方法需要解决的事情。 示例如下: public interface T...

2018-09-28 14:43:15

阅读数 97

评论数 0

java遗珠之重复注解

重复注解 有时候你需要相同的注解在同一种类型或者定义上,这时候重复注解就发挥作用了。 我来看个定时执行的代码 @Component public class ScheduledTasks { private static final Logger log = LoggerFactory....

2018-09-27 15:48:48

阅读数 57

评论数 0

java遗珠之@SafeVarargs

当使用泛型作为可变参数时,因为可变参数是数组类型,在编译之后泛型会被擦出掉,那么传入参数就成了unchecked的警告: 如下例子 public class VarargsWaring { private static List<String...

2018-09-27 10:27:34

阅读数 174

评论数 0

java遗珠之隐藏和覆盖

1.只有实例方法有覆盖,类方法,类变量和实例变量都是隐藏。 2.覆盖的意思就是会调用具体的子类,而隐藏就看谁去调用。 3.类变量可以隐藏实例变量,实例变量也可也隐藏类变量。 4.类方法和实例方法无法相互覆盖和隐藏。 例子如下: class Father { int a = 1;...

2018-09-26 18:36:23

阅读数 44

评论数 0

java遗珠之变强了的Comparator

一个更为强大的Comparator,可以说再也不用写侵入式的Comparable接口,而且连Comparator的lambda都可以不写了。 我先来看需要排序的类: public class Person { public enum Sex { MALE, FEMA...

2018-09-26 16:05:26

阅读数 108

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭