Open DongShi opened 7 years ago
public final class A {
private static final int n = 100
public final int get() {return n}
public void set(u) {n = u}
}
about java annotation. Java annotations are typically used for the following purposes:
@interface MyAnnotation {
String value() default "";
String name();
int age();
String[] newNames();
}
Compiler instructions
Build-time instructions Runtime instructions
you can specify for your custom annotation if it should be available at runtime, for inspection via reflection. You do so by annotating your annotation definition with the @Retention annotation. Here is how that is done:
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited
@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@interface MyAnnotation {
String value() default "";
}
You can place Java annotations above classes, interfaces, methods, method parameters, fields and local variables.
JRE vs JDK The JRE does not contain a Java compiler. Only the SDK does.
Hibernate常用Annotation标签说明 @ javax.persistence.Entity
实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表
位置:用于类级别
参数:无
样例:@Entity
注意:导入标签类时可能会有多个,这里使用的是javax.persistence.Entity
@javax.persistence.Table
实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表
位置:用于类级别
参数:name – 用于指定表名,如果不指定则表名与类名相同,考虑到不同数据库的解析方式可能不一样,建议手工指定表名。表名统一用大写字母,单词之间用下划线分隔。
样例:@Table(name=”DAT_USER_INFO”)
注意:导入标签类时可能会有多个,这里使用的是javax.persistence.Table
@ javax.persistence.Id
该标签用于标识数据实体的主键
位置:用于主键属性的Get方法,QFrame约定为getId()方法
参数:无
样例:@Id
@ javax.persistence.GeneratedValue
定义主键生成方式,通常和@ org.hibernate.annotations.GenericGenerator一同使用,用于生成主键。
位置:用于主键属性的Get方法,QFrame约定为getId()方法。
参数:strategy -构造方式;generator -构造器名称。
样例:
1、 由Hibernate自动生成主键:@GeneratedValue(strategy=GenerationType.AUTO)
2、 根据主指构造器生成主键:@GeneratedValue(generator="assigned")
@ org.hibernate.annotations.GenericGenerator
Hibernate提供的主键构造器。通常与@GeneratedValue配合使用。
位置:用于主键属性的Get 方法。
参数:name -构造器名称,在@GeneratedValue 中引用;strategy -构造方式。
样例:
手工指定的主键: @GeneratedValue(generator="assigned") @GenericGenerator(name = "assigned", strategy = "assigned")
从Sequence 获取主键: @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="TASK_SEQ") @SequenceGenerator(name="TASK_SEQ",sequenceName="SEQ_GROUP_SEND_TASK")
@ javax.persistence.Column
用于表示实体属性对应数据库表的哪个字段。
位置:用于属性的Get 方法
参数:
name – 字段名,默认为属性名,建议手工指定,字段名统一使用大写字母
nullable -boolean 值,表示该属性是否可以为空,默认为true。
insertable -boolean 值,表示该属性是否在insert语句中包含,默认为true。
updatable -boolean 值,表示该属性是否在update 语句中包含,默认为true。
length -int值,表示该属性值的长度,通常用于字符串属性,默认为255。
unique -boolean 值,表示该属性值是否建立唯一索引,默认为false。
@ javax.persistence.Transient
用于标识不在数据库表中映射的属性。
位置:用于属性的Get 方法
参数:无
@ org.hibernate.annotations.Type
自定义类型,将属性用于自定义类型。通常用于定义枚举类型。
位置:用于属性的Get 方法
参数:type -类型完成名称(包含包名)
样例:@Type(type="net.osjava.xsmfms.entity.SendTypeDataType")
Lambda语法详解
lambda眼中的this 在lambda中,this不是指向lambda表达式产生的那个SAM对象,而是声明它的外部对象。
方法引用 前面介绍lambda表达式简化的时候,已经看过方法引用的身影了。方法引用可以在某些条件成立的情况下,更加简化lambda表达式的声明。方法引用语法格式有以下三种:
objectName::instanceMethod ClassName::staticMethod ClassName::instanceMethod 前两种方式类似,等同于把lambda表达式的参数直接当成instanceMethod|staticMethod的参数来调用。比如System.out::println等同于x->System.out.println(x);Math::max等同于(x, y)->Math.max(x,y)。
最后一种方式,等同于把lambda表达式的第一个参数当成instanceMethod的目标对象,其他剩余参数当成该方法的参数。比如String::toLowerCase等同于x->x.toLowerCase()。
1, dynamic parameters is fun, say we have
it is actually identical to