java3
注解:
不影响程序的运行,可以当做注释,也能被别的程序读取
内置注解:
@Override告诉去检查这是不是在重写方法,若不是则报错

@Deprecated:能调用但是不建议调用
SuppressWarnings:不再显示警告信息


zzz
自定义注解:

@Target:设置注解范围
下图 @Target:表示该注解只能用于方法前面


@Retention

下图此处表示:可以加到类和方法前面:

定义参数变量和数组,及默认值:


如果自定义注解只有一个参数且名字为value:


反射:
Class对象及获取方法:
所有int[]对应一个Class对象:



获取类的信息:



若构造方法被人为定义了,则编译器不会再自己添加了
调用方法,构造对象:


setAccessible:可以访问private属性了

操作泛型:


操作注解:



动态编译:


新建文件:



运行:

或通过反射运行:
invoke第一个参数是哪个对象在调用方法,有main是static,就没有对象,对是null:

js是解释性语言
执行js代码:

放入engine中的变量msg可以被java操作,也可以被js操作。
最后2行:js改变了msg的值,然后通过java来获取值




新建js文件并执行:


字节码操作:

使用javassist类库造一个java文件并编译:
先导入javassist.jar




生成.class文件:

利用XJad反编译:

获得指定类的信息:

自定义方法并加入到指定类中:

调用它:

修改指定类的方法体:


给指定类添加属性和set,get方法:

获得构造器:

获得注解:


设计模式需要遵守的七大原则:
单一职责:只做一件事


接口隔离原则:

依赖倒转原则:
多与接口发生依赖而不是具体的类



里氏替换 :





开闭原则(ocp):
创建者可以添加功能,但是使用者的代码不需要改动。





迪米特法则:

合成复用:

B若是想要A的方法:

UML:统一建模语言:
符号:


依赖:



泛化:



实现:


关联:

聚合:


组合:





设计模式:

单例:一个类只有唯一一个对象实例

饿汉式(静态常量):


饿汉式(静态代码块)

以上缺点是:无法实现懒加载
懒汉式(线程不安全):


懒汉式(线程安全):


双重检查(2个if)(推荐):

静态内部类(推荐):
在加载外部类时不会加载静态内部类从而实现懒加载,只有当调用getIstance方法时才会加载它。


枚举(推荐):



简单工厂模式:
不直接自己生产东西,而是委托一个工厂来生产东西, 到时候直接调用工厂的方法


Pizza类:

具体的Pizza:

创建一个专门用于生产某种pizza的工厂类:

建立一个订购pizza的类:



参数是System.in

建立一个类用于发出订购请求 :

使用静态进行变形:




工厂方法模式:
一个抽象工厂,多个具体工厂来实现方法


类图:

具体的pizza:

抽象工厂:

具体工厂:

执行:

抽象工厂模式:实现上面需求

类图:
一个工厂接口,多个具体工厂实现“”

接口:

工厂子类:




应用:


浙公网安备 33010602011771号