一个对象可以引用多个实际类型的现象称为多态。在运行时能够自动地选择调用的适当方法的现象称为动态绑定。
Java中,只有基本类型的值不是对象。
The equals method, as implemented in the
Object class, determines whether two object references are identical.两个对象是否具有相同的引用。
The getClass method returns the class of an
object返回一个对象所属的类。
A hash code is an integer that is derived
from an object.由对象导出的一个整数值。
java.lang.Class
String getName()
returns the name of this class.
Class getSuperclass()
returns the superclass of this class as a
Class object.
ArrayList是一个采用参数类型的泛型类。
java.util.ArrayList<T>
ArrayList<T>()
constructs an empty array list.
ArrayList<T>(int initialCapacity)
constructs an empty array list with the
specified capacity.
Parameters:
|
initialCapacity
|
数组列表的初始容量
|
boolean add(T obj)
appends an element at the end of the array
list. Always returns true.
Parameters:
|
obj
|
the element to be added
|
int size()
returns the number of elements currently
stored in the array list. 当前元素数量。
void ensureCapacity(int capacity)
ensures that the array list has the capacity
to store the given number of elements without relocating its internal storage
array.确保数组列表在不重新分配内部存储空间的情况下能够保持给定数量的元素。
Parameters:
|
capacity
|
the desired storage capacity
|
void trimToSize()
reduces the storage capacity of the array
list to its current size.
将数组列表的容量削减为当前尺寸。
void set(int index, T obj)
puts a value in the array list at the
specified index, overwriting the previous contents.
T get(int index)
gets the value stored at a specified index.
void add(int index, T obj)
shifts up elements to insert an element.
T remove(int index)
removes an element and shifts down all
elements above it. The removed element is returned.
The wrapper classes are immutable—you
cannot change a wrapped value after the wrapper has been constructed. They are
also final, so you cannot subclass them.对象包装类是不可变的,不允许更改包装在其中的值。
ArrayList<Integer>
list = new ArrayList<Integer>();
can analyze the capabilities of classes is
called reflective.能够分析类的能力
1. Analyze the capabilities of classes at
run time;
2. Inspect objects at run time, for
example, to write a single toString method that works for all classes;
3. Implement generic array manipulation
code; and
4. Take advantage of Method objects that
work just like function pointers in languages such as C++.
While your program is running, the Java
runtime system always maintains what is called runtime type identification on
all objects. Java runtime system始终为所有的对象维护一个运行时类别标识。保存这些信息的类为Class。
1.
Object类的getClass()方法返回一个Class类实例。
Employee e;
Class cl = e.getClass();
2.
Class的静态方法forName可获得对应的Class对象。
String className = "java.util.Date";
Class cl = Class.forName(className);
3.
T.class返回对应的Class对象。
Class cl1 = Date.class; // if you import java.util.*;
Class cl2 = int.class;
Class cl3 = Double[].class;
Object newInstance()
returns a new instance of this class.
java.lang.reflect包内的三个类Field, Method和Constructor分别描述类的域、方法和构造器。
Class类的getFields, getMethods, 和getConstructors方法返回类及超类的公有成员。
Field[] getFields()//返回该类及其超类的所有域
Field[] getDeclaredFields()//返回该类的所有域
同理Method[]
getMethods()、Method[]
getDeclaredMethods()、Constructor[]
getConstructors()、Constructor[]
getDeclaredConstructors()
All three of these classes also have a method
called getModifiers that returns an integer,描述public,static等修饰符。java.lang.reflect.Modifier类的isPublic, isPrivate, isFinal方法可以分析该整数。
The setAccessible method is a method of the AccessibleObject
class, the common superclass of the Field, Method和Constructor classes.
AccessibleObject是Field, Method, and Constructor类的超类。
java.lang.reflect.AccessibleObject
void setAccessible(boolean flag)
设置对象可访问权限
boolean isAccessible()
返回对象可访问权限
java.lang.reflect.Field 1.1
Object get(Object obj)
获得域值
void set(Object obj, Object newValue)
设置域值