首先我们来看看成员类。Member Class指的是这个class是作为另一个类的成员(或者称之为属性)存在的,例如代码:
package com.freesoft.java7newfeature;
public class TestClass {
public static void main(String[] args) {
TestClass t = new TestClass();
t.TestMember();
}
public void TestMember() {
MemberClass m = new MemberClass("MemberClass Test");
System.out.println(m);
}
class MemberClass {
private String name;
public MemberClass(String name) {
this.name = name;
}
@Override
public String toString() {
return "MemberClass [name=" + name + "]";
}
}
}
下面我们来看看(Local) Inner Class。之所以将Local括号括起来是因为没有outter/remote inner class。Inner Class的意思是创建在方法体中的类代码块,例如代码:
public void TestMember() {
MemberClass m = new MemberClass("MemberClass Test");
System.out.println(m);
class LocalInnerClass {
private String name;
public LocalInnerClass(String name) {
this.name = name;
}
@Override
public String toString() {
return "LocalInnerClass [name=" + name + "]";
}
}
LocalInnerClass i = new LocalInnerClass("InnerClass Test");
System.out.println(i);
}
有了Inner Clas我们当然需要Anonymous Inner Class。这个类仍然是一个Inner Class,不过特别的是这个类没有定义一个名字(主要是有两种情况:一种是这个类实在太简单,没必要重新创建一个外部类;另一种情况是这个类的实现仅在此处有效,例如Android中的界面元素的事件响应处理),此时我们需要使用匿名内部类,如:
public void TestMember() {
MemberClass m = new MemberClass("MemberClass Test");
System.out.println(m);
// class LocalInnerClass {
// private String name;
// public LocalInnerClass(String name) {
// this.name = name;
// }
// @Override
// public String toString() {
// return "LocalInnerClass [name=" + name + "]";
// }
// }
//
// LocalInnerClass i = new LocalInnerClass("InnerClass Test");
// System.out.println(i);
System.out.println(new Object(){
@Override
public String toString() {
return "Anonymous Inner Class.";
}
});
}
最后我们看一下一个特殊的类:enum,这个例子和我们平常使用enum时仅仅使用枚举值不同的是,我们还可以对EnumOliveArea这个类的对象toString(),当然你还可以扩充别的方法:
package com.freesoft.testentity;
public enum EnumOliveArea {
// 这些是enum的实例,可以看到创建实例时使用了Constructor
KALAMARA("Kalamara"), LIGURIO("Liguirio"),
PICHOLINE("Pichooline"), GOLDEN("Golden");
private String name;
private EnumOliveArea(String name) {
this.name = name;
}
@Override
public String toString(){
return name;
}
}