JAVA1110 反射 泛型


import java.lang.reflect.Field;public class Main {public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {Student s = new Student("xiaocao", 5); //创建了一个实例//实例化了一个对象// s.times = 14;// System.out.println(s.times);// System.out.println(s.getName());//为啥获得的是初始值?能获得新赋的值吗?//System.out.println(s.getFee());//再说:student类 Classes类 School类 属性随便定义 共有一个name属性 写一个方法 入参不限制 返回name 返回值:name属性School sc=new School();sc.getName();//返回值是name属性?Class <?> school=Class.forName("School");Class <?> game=Class.forName("Game");Class <?> student=Class.forName("Student");Field schoolfield= school.getDeclaredField("name");System.out.println(schoolfield.getName());System.out.println(schoolfield.getType().getSimpleName());Field gamefield=game.getDeclaredField("name");System.out.println(gamefield.getName());System.out.println(gamefield.getType().getSimpleName());Field studentfield=student.getDeclaredField("name");System.out.println(studentfield.getName());System.out.println(schoolfield.getType().getSimpleName());try {// Student sl = new Student("llk",21);// System.out.println("年龄类型" +// (sl.getAge() instanceof Integer ? "Integer" :"int"));
} catch (Exception e) {System.out.println("创建失败"+e.getMessage());
}}
}
泛型
泛型就是在定义类、接口或方法时,不指定具体的类型,而是使用一个“类型参数”,在使用时再指定这个参数的具体类型。
需要泛型为啥
没有泛型
import java.util.ArrayList;
import java.util.List;// 没有泛型的时代
List list = new ArrayList();
list.add("Hello");
list.add(100); // 可以放任何类型,没有问题// 但取出时...
String str = (String) list.get(0); // 需要强制转换
String error = (String) list.get(1); // 运行时抛出ClassCastException!
泛型引入
泛型就像给容器贴上一个"类型标签",告诉编译器:“这个容器只能存放指定类型的数据”。
import java.util.ArrayList;
import java.util.List;public class FanXin {public static void main(String[] args) {List<String> stringli=new ArrayList<>();stringli.add("hello");String str=stringli.get(0);System.out.println(str);}
}

泛型基础语法
泛型类


public class Box<T> {private T content;public void setContent(T content){this.content=content;////this.content 当前对象的content成员变量//content参数值}//这个构造方法是什么意思?
//不是构造方法 是setter方法//将传入的参数值设置给类的成员变量content 设置或修改内容值public T getContent() {return content;}//public static void main(String[] args) {Box<String> stringBox=new Box<>();stringBox.setContent("ok");System.out.println(stringBox);}
}
import java.util.ArrayList;
import java.util.List;public class FanXin {public static void main(String[] args) {List<String> stringli=new ArrayList<>();stringli.add("hello");String str=stringli.get(0);System.out.println(str);Box<String> stringBox=new Box<>();stringBox.setContent("ok");String text=stringBox.getContent();System.out.println(text);Box<Integer> integerBox=new Box<>();integerBox.setContent(100);int number=integerBox.getContent();System.out.println(number);}
}


怎么理解装箱和拆箱
装箱:将基本数据类型转换为对应的包装类对象
拆箱:将包装类对象转换为对应的基本数据类型


记住这个简单的原则:能用int就用int,必须用对象时才用Integer。
泛型接口


