Fork me on GitHub
Mao's Blog

  • 首页

  • 归档

  • 分类

  • 标签

  • Java编程思想

  • Java并发编程实战

  • 搜索

Java编程思想———动态代理

发表于 2018-11-26 | 分类于 Java | 本文字数: 3.3k | 阅读时长 ≈ 0:06

什么是代理

代理是基本的设计模式之一,给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象。

通过使用代理,通常有两个优点:

  • 可以隐藏委托类的实现。
  • 可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。
阅读全文 »

Java编程思想———反射:运行时的类信息

发表于 2018-11-25 | 分类于 Java | 本文字数: 3.1k | 阅读时长 ≈ 0:05

如果不知道某个对象的确切类型,RTTI可以告诉你。但是有一个限制:这个类型在编译时必须已知,这样才能使用RTTI识别它。换句话说,在编译时,编译器必须知道所有要通过RTTI来处理的类。

反射允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。

Class类和java.lang.reflect类库一起对反射的概念进行了支持,该类库包含了Field、Method以及Constructor类。这些类型的对象是由JVM在运行时创建的,用以表示未知类里对应的成员。这样你就可以使用Constructor创建新的对象,用get()和set()方法读取和修改与Field对象关联的字段,用invoke()方法调用与Method对象关联的方法。另外,还可以调用getFields()、getMethods()和getConstructors()等很便利的方法,以返回表示字段、方法以及构造器的对象的数组。这样,匿名对象的类信息就能在运行时被完全确定下来,而在编译时不需要知道任何事情。

阅读全文 »

Java编程思想———类型信息之Class对象

发表于 2018-11-24 | 分类于 Java | 本文字数: 4.2k | 阅读时长 ≈ 0:07

运行时类型信息(Runtime Type Information,RTTI)使得你可以在程序运行时发现和使用类型信息。Java在运行时识别对象和类的信息,主要有两种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型;另一种是反射机制,它允许我们在运行时发现和使用类的信息。

RTTI的形式包含:

  1. 传统的类型转换,如“(Shape)”,由RTTI确保类型转换的正确性,如果执行了一个错误的类型转换,就会抛出一个ClassCastException异常。
  2. 代表对象的类型的Class对象。通过查询Class对象可以获取运行时所需的信息。
  3. 关键字instanceof。它返回一个布尔值,告诉我们对象是不是某个特定类型的实例。
阅读全文 »

Java编程思想———字符串

发表于 2018-11-13 | 分类于 Java | 本文字数: 2.7k | 阅读时长 ≈ 0:05

不可变String

String对象是不可变的,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则丝毫未动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Immutable {
public static String upcase(String s) {
return s.toUpperCase();
}
public static void main(String[] args) {
String q = "howdy";
System.out.println(q);
String qq = upcase(q);
System.out.println(qq);
System.out.println(q);
}
}

//output
howdy
HOWDY
howdy
阅读全文 »

Java编程思想———标准异常

发表于 2018-11-11 | 分类于 Java | 本文字数: 444 | 阅读时长 ≈ 0:01

Throwable类被用来表示任何可以作为异常被抛出的类。从Throwable继承可分为两种类型:Error用来表示编译时和系统错误,一般不用关心;Exception是可以被抛出的的基本类型,通常是程序员所关心的。Exception又可以分为受检查的异常和未受检查的异常,未受检查的异常也叫运行时异常,受检查的异常必须要处理。

阅读全文 »
1234…14
云逸云飞

云逸云飞

A Java Programmer

70 日志
8 分类
23 标签
RSS
GitHub E-Mail
© 2018 – 2019 云逸云飞