枚举类
概念:
测试代码:
package com.example.util;
import java.util.Scanner;
public enum Season {
SPRING("绿", "春暖花开"),
SUMMER("红", "夏日炎炎"),
AUTUMN("黄", "秋风萧瑟"),
WINTER("蓝", "冰雪皑皑"); //第一行是常量 每个常量都是枚举类创建的对象,可以写构造方法 public static final
private String color;
private String msg;
Season() {
}
Season(String color,String msg)
{
this.color=color;
this.msg=msg;
}
public String getColor() {
return color;
}
public String getMsg() {
return msg;
}
public static void main(String[] args) {
Season[] seasons = Season.values();
for(Season s:seasons){
System.out.println(s.ordinal()+"--"+s.name()+"--"+s.getColor()+"--"+s.getMsg());
}
}
}
测试结果:
Mysql多表查询
内连接:(返回两张表的交集)
隐式内连接
select * from t1,t2 where 条件;
显式内连接:
select * from t1 join t2 on 条件;
外连接:
左外连接:
select * from t1 left join t2 on 条件; //返回t1的所有结果和t1,t2的交集
右外连接:
select * from t1 right join t2 on 条件; //返回t2的所有结果和t1,t2的交集
注解
@Deprecated :表示已经过时
@SuppressWarnings("all") 抑制编译器所产生的所有类型的警告
元注解——注解的注解
@Retention
@Target
用元注解来写一个自定义注解
自定义注解:
package com.example.testAnnotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE) //可用于修饰类
public @interface MyAnnotation {
String className();
String methodName();
// int age() default 18;
}
测试:
Student类:
package com.example.testAnnotation;
import lombok.Data;
@Data
public class Student {
int id;
String name;
int age;
public void m1(){
System.out.println("m1方法被调用");
}
}
测试代码:
package com.example.testAnnotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@MyAnnotation(className = "com.example.testAnnotation.Student",methodName = "m1")
public class test {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
//拿到注解中的 className 和 methodName
Class<test> testClass = test.class;
MyAnnotation annotation = testClass.getAnnotation(MyAnnotation.class);
String className = annotation.className();
String methodName = annotation.methodName();
System.out.println("className:"+className+"\n"+"methodName:"+methodName);
//加载类
Class<?> c = Class.forName(className);
//获取无参构造
Constructor<?> constructor = c.getConstructor();
//创建实例
Object obj = constructor.newInstance();
//获取方法
Method method = c.getMethod(methodName);
//调用方法(invoke)
method.invoke(obj);
}
}