- 泛型
public class Test {
public static void main(String[] args) {
List list=new ArrayList();
list.add(1111);
list.add("aaaa");
list.add(true);
// 只能存字符串(阻拦)
List
l.add("ddd");
// l.add(111);//只能存字符串(类型安全)这是编译期的问题不会进入运行阶段
}
}
A
a1.setKey("fd");//使用 setKey(T key)方法中的key的形参就是String
String s=a1.getKey();// T getKey()返回值就有new固定就是String
A
a2.setKey(122);
Integer w=a2.getKey();
A a3=new A();//不指定就是object类型
//不同的数据类型不能赋值a1=a2;
}
}
class A
private T key;
public void setKey(T key){
this.key=key;
}
public T getKey() {
return this.key;
}
}
public class Test1 {
public static void main(String[] args) {
B1
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
Dd d=new Dd();
List
d.test(l1);
List
d.test(l2);
List
d.test1(lc);
List
d.test1(ld);
// List
// d.test1(lb);
d.test2(lc);
Listla=new ArrayList();
d.test2(la);
// d.test2(ld);
List
d.test3(li);
// d.test3(la);
}
}
class Dd {
public void test(List> list){//test方法需要一个list集合,不确定到底存的什么数据
}
public void test1(List extends C1> list){//list参数的元素数据类型是c1及其子类
}
public void test2(List super C1> list){//list参数的元素数据类型是c1及其父类
}
public void test3(List extends IA> list){//list参数的元素数据类型是 IA的实现类
}
}
class A1{
}
class B3 extends A1{
}
class C1 extends B3{
}
class D1 extends C1{
}
interface IA{}
class IAImp1 implements IA{}
- 枚举
public class Test3 {
public static void main(String[] args) {//这段执行的是获取一个season的对象
Season spring= Season.SPRING ;
spring.showInfo();
Season autumn= Season.AUTUMN ;
autumn.showInfo();
Season summer= Season.SUMMER;
summer.showInfo();
Season winter= Season.WINTER ;
winter.showInfo();
Season spring1=Season.SPRING;
System.out.println(Season.SPRING);
System.out.println(spring.equals(spring1));//每次执行这个SEASON.spring获得是相同的对象,枚举类的每个枚举都是单例模式
spring1.test();
}
}
enum Season implements ITest{
SPRING("春天","春暖花开"),//此处相当于在调用有参的构造
SUMMER("夏天","夏日炎炎"),
AUTUMN("秋天","秋高气爽"),
WINTER("冬天","寒风咧咧");
private final String name;
private final String desc;
private Season(String name,String desc){
this.desc=desc;
this.name=name;
}
public void showInfo(){
System.out.println( this.name+":"+ this.desc);
}
@Override
public void test() {
System.out.println("这是实现的itest方法");
}
}
interface ITest{
void test();
}
输出结果
春天:春暖花开
秋天:秋高气爽
夏天:夏日炎炎
冬天:寒风咧咧
SPRING
true
这是实现的itest方法
Process finished with exit code 0
- 注解Annotation
import java.awt.*;
import java.lang.annotation.*;
import java.util.ArrayList;
public class Test4 {
public static void main(String[] args) {
new TestB().test1();//过时
@SuppressWarnings("rawtypes")//抑制警告
ArrayList list=new ArrayList();
}
}
class TestA{
public void test(){
}
}
//@TestAmm//不能给方法注解
class TestB extends TestA{
@TestAmm(Id=100,desc ="姓名")
String name;
@Override
public void test() {
super.test();
}
@Deprecated
public void test1() {}
}
@Target(ElementType.FIELD)//这个注解类是给其他类的属性做注解
@Retention(RetentionPolicy.RUNTIME)//注解的声明周期
@documented
@interface TestAmm{
public int Id() default 0;
public String desc() default "";
}



