Java核心编程部分的基础学习内容就不一一介绍了,本文的重点是JAVA中相对复杂的一些概念,主体内容如下图所示。

 Java核心编程快速入门

 

 

Java核心编程快速入门

反射reflect是理解Java语言工作原理的基础,Java编译器首先需要将我们编写的.java源文件编译为.class字节码,然后再JVM虚拟机上运行,接下来通过一个表格,来了解反射的基本操作。

功能

示例

泛化的Class引用

Class<?> intClass = int.class

Class<? extends Number> bounded = int.class

Class<? super Person> per = Person.clss.getSuperClass();

type.newInstance();

类型转换前先做检查

Instanceof()

@SuppressWarnings("unchecked")

反射操作

Class<?> x = Class.forName("xxx");

Method[] methods = x.getMethods();

Constructor[] ctors = x.getConstructors();

Method m = x.getDeclaredMethod("name");

m.setAccessible(true);

m.invoke(new XXX());

动态代理

DynamicProxyHandler implements InvocationHandler…

Proxy.newProxyInstance(X.class.getClassLoader(), new Class[]{X.classs}

, new DynamicProxyHandler(real));

泛型接口

public interfacte Generator<T>{T next();}

泛型方法

public <T> T get();

匿名内部类

非常重要的概念,在jdk1.8以下时,需要使用该方式实现函数函数式编程

        List<String> ids = Lists.transform(travelTicketList, new Function<TravelTicketInfoDTO, String>() {

            @Override

            public String apply(TravelTicketInfoDTO dto) {

                return dto.getId();

            }

        });

为了兼容性,泛型存在编译时进行擦除的操作。

泛型的边界限制

class A<T extends Dimension & HasColor & Weight>

Tip:

使用类的准备工作包括3个步骤:加载,由类加载器执行,查找classpath指定路径,并从字节码中创建一个Class对象;链接,验证字节码,为静态域分配空间;初始化,首先初始化超类,然后执行静态初始化器和初始化块。

Tuple元组的概念(C#中很常用),将一组对象直接打包存储的一个对象,该对象只能读取,且不能新增。

 

Java核心编程快速入门

JDK提供的容器非常的多,主要的有HashMap,HashSet,ArrayList、LinkedList,以及最常见的数组。

定义

诠释

List

ArrayList, LinkedList

Set

HashSet, TreeSet, LinkedHashSet

Tree表示其底层通过tree结构存储,保持有序

Map

HashMap,TreeMap,LinkedHashMap,IdentityHashMap

Queue, Stack

 

Enum

其继承之Enum,默认提供一个values方法(编译时织入)用于获取枚举类型数组

日常使用中,通常需要添加value和describe两个参数和1个valueOf的方法,方面展示

在java中,switch和enum很容易实现状态机,职责链等;EnumMap/Set的使用;

Tip:

Collections类中提供了很多的的便捷方法用于容器操作,此外,guava库对以上的容器类型提供了一个非常有用的扩充,尤其是XXXs.xxx也提供类很多便捷的静态方法。

在使用集合时,一定要注意其可变性,以及线程安全等问题,才不容易出错。

比如系统提供的线程安全的集,List<String> list = Collections.synchronizedList(new ArrayList<String>());

当针对大对象时,为了便于垃圾回收,java提供了Reference类及其子类,SoftReference,WeakReference,PhantomReference,WeakHashMap等。

常见enum扩展

 1 public enum DemoEnum {
 2     First(0, "第一个"),Second(1, "第二个"), Third(1, "第三个");
 3 
 4     private Integer value;
 5     private String describe;
 6 
 7     private DemoEnum(Integer value, String describe) {
 8         this.value = value;
 9         this.describe = describe;
10     }
11 
12     public Integer getValue() {
13         return value;
14     }
15 
16     public String getDescribe() {
17         return describe;
18     }
19 
20     public static boolean exist(Integer value) {
21         boolean result = false;
22         DemoEnum enu = valueOf(value);
23         if (enu != null)
24             result = true;
25 
26         return result;
27     }
28 
29     public static DemoEnum valueOf(Integer value) {
30         DemoEnum[] enums = DemoEnum.values();
31         for (DemoEnum item : enums) {
32             if (item.getValue() == value) {
33                 return item;
34             }
35         }
36         return null;
37     }
38 
39     public static boolean exist(String value) {
40         boolean result = false;
41         DemoEnum enu = valueOf(value);
42         if (enu != null)
43             result = true;
44 
45         return result;
46     }
47 }
View Code

相关文章:

猜你喜欢
相关资源
相似解决方案