JDK8开始,接口新增了三种形式的方法
接口的多继承
内部类
成员内部类
静态内部类
局部内部类
匿名内部类
import javax.swing.*;
import java.awt.event.ActionEvent;
public class Test {
public static void main(String[] args) {
// 扩展 内部类在开发中的真实使用场景
// GUI编程
// 1、创建窗口
JFrame win = new JFrame("登录界面");
// 2、创建面板
JPanel panel = new JPanel();
win.add(panel);
// 3、创建按钮
JButton btn = new JButton("登录");
// 4、将按钮添加到桌布上
panel.add(btn);
// 给按钮绑定单击事件
/* btn.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"登录成功");
}
});*/
//匿名内部类 最终目标 简化代码 lamba表达式
btn.addActionListener(e -> {
JOptionPane.showMessageDialog(null, "登录成功");
});
// 5、设置窗口的尺寸
win.setSize(300, 200);
win.setLocationRelativeTo(null);
win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
win.setVisible(true);
}
}
枚举
枚举的特点
泛型
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
// 认识泛型
ArrayList list = new ArrayList();
//list.add(123);
list.add("abc");
//list.add(new Person());
for (int i = 0; i < list.size(); i++) {
String e= (String) list.get(i);
System.out.println(e);
}
System.out.println("--------------------------");
//ArrayList<String> list2 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<>();// jdk 1.7 开始 后面的数据类型可以省略
list2.add("abc");
list2.add("abc1");
//list2.add(new Person());
for (int i = 0; i < list2.size(); i++) {
String e= list2.get(i);
System.out.println(e);
}
}
}
class Person{}
//泛型类
public class MyArrayList<E> {
private Object[] arr = new Object[10];
private int size = 0;
public boolean add(E e) {
arr[size++] = e;
return true;
}
public E get(int index) {
return (E) arr[index];
}
}
public class Test {
public static void main(String[] args) {
// 泛型类的定义和使用
MyArrayList<String> list = new MyArrayList<>();
list.add("hello");
list.add("world");
String s = list.get(0);
System.out.println(s);
}
}
public interface Data <T>{
void add(T t);
ArrayList<T> getByName(String name);
}
public class BENZ extends Car {
}
public class BMW extends Car {
}
public class Car {
}
public class Dog {
}
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
// 泛型方法的定义和使用
String res = test("java");
System.out.println(res);
Dog d = test(new Dog());
System.out.println(d);
// 所有的汽车可以一起参加比赛
ArrayList<Car> cars = new ArrayList<>();
cars.add(new BMW());
cars.add(new BENZ());
go(cars);
ArrayList<BMW> bmws = new ArrayList<>();
bmws.add(new BMW());
bmws.add(new BMW());
go(bmws);
ArrayList<BENZ> benzs = new ArrayList<>();
benzs.add(new BENZ());
benzs.add(new BENZ());
go(benzs);
/*ArrayList<Dog> dogs = new ArrayList<>();
dogs.add(new Dog());
dogs.add(new Dog());
go(dogs);*/
}
// ?是通配符,在使用泛型的时候可以代表一切类型 // ? extends Car 上限继承 // ? super Car 下限继承
public static void go(ArrayList<? extends Car> cars) {
for (int i = 0; i < cars.size(); i++) {
System.out.println(cars.get(i));
}
}
/*public static <T extends Car> void go(ArrayList<T> cars) {
for (int i = 0; i < cars.size(); i++) {
System.out.println(cars.get(i));
}
}*/
// 泛型方法
public static <T> T test(T t) {
return t;
}
}