嵌套类、局部类:是带有名字的,可以多次使用,嵌套类使用相对更为灵活一点,局部类在函数内内部。匿名类只是使用一次,lambda是匿名类的简写。
嵌套类:
是否有命名空间:是
是否可以生面为static类型:可以声明为static类,创建方式OuterClass.StaticNestedClass。类的所有变量与类型为static形式,不可以调用no-static类型。no-static类型可以调用外部类中的所有变量,同理外部类也可以调用内部类中的所有变量。具有更好的封装性。创建方式为outerObject.new InnerClass();
局部类:在函数内部
类是否有命名空间:是
类是否可以访问局部变量:访问不可变类型
类是否可以声明为static:不可以,因为要访问一些,所以不能为static。如果函数为static函数,则函数不能访问非static变量。同理不能声明为接口,因为接口默认为static变量。
匿名类: 形式为:new type(){};要去与local函数一样;
lambda:是针对类中只含有一个函数的接口或者类
在调用的时候,而生成的类。lambda的表达形式为不需要写明类的类型,编译器会自动根据需要的类型、返回类型,匹配到合适的类型上面。表示形式为
(p)->{
return varible
}
是否有自己的命名空间:无
引用:是针对lambda函数来说的,lambda的函数内部,lambda的函数只有调用,没有其他的。有四种形式。
调用格式如下:说明一点lambda的函数必须与引用函数的格式相同(大概)
enum类型:
表示一组常量类型,一般用于SWITCH ,可以包含field method类型