Java基础27-反射-JDK新特性
Created At :
Count:878
Views 👀 :
Demo1_Reflect
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Demo1_Reflect {
public static void main(String[] args) throws ClassNotFoundException { Class clazz1 = Class.forName("com.heima.bean.Person"); Class clazz2 = Person.class; Person p = new Person(); Class clazz3 = p.getClass(); System.out.println(clazz1 == clazz2); System.out.println(clazz2 == clazz3); } }
|
Demo2_Reflect
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| public class Demo2_Reflect {
public static void main(String[] args) throws Exception { Juicer j = new Juicer(); BufferedReader br = new BufferedReader(new FileReader("config.properties")); Class clazz = Class.forName(br.readLine()); Fruit f = (Fruit) clazz.newInstance(); j.run(f); } } interface Fruit { public void squeeze(); } class Apple implements Fruit { public void squeeze() { System.out.println("榨出一杯苹果汁儿"); } }
class Orange implements Fruit { public void squeeze() { System.out.println("榨出一杯橘子汁儿"); } }
class Juicer {
public void run(Fruit f) { f.squeeze(); } }
|
Demo3_Constructor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class Demo3_Constructor {
public static void main(String[] args) throws Exception { Class clazz = Class.forName("com.heima.bean.Person"); Constructor c = clazz.getConstructor(String.class,int.class); //获取有参构造 Person p = (Person) c.newInstance("张三",23); System.out.println(p); }
}
|
Demo4_Field
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class Demo4_Field {
public static void main(String[] args) throws Exception { Class clazz = Class.forName("com.heima.bean.Person"); Constructor c = clazz.getConstructor(String.class,int.class); //获取有参构造 Person p = (Person) c.newInstance("张三",23); Field f = clazz.getDeclaredField("name"); f.setAccessible(true); f.set(p, "李四"); System.out.println(p); }
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class Demo5_Method {
public static void main(String[] args) throws Exception { Class clazz = Class.forName("com.heima.bean.Person"); Constructor c = clazz.getConstructor(String.class,int.class); //获取有参构造 Person p = (Person) c.newInstance("张三",23); Method m = clazz.getMethod("eat"); m.invoke(p); Method m2 = clazz.getMethod("eat", int.class); //获取有参的eat方法 m2.invoke(p, 10); }
}
|
Demo1_JDK7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class Demo1_JDK7 {
public static void main(String[] args) { System.out.println(0b110); System.out.println(100_000); }
}
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1210331079@qq.com
Title:Java基础27-反射-JDK新特性
Count:878
Author:千 羽
Created At:2020-06-16, 12:24:25
Updated At:2020-11-19, 13:57:04
Url:https://nateshao.github.io/2020/06/16/Java%E5%9F%BA%E7%A1%8027-%E5%8F%8D%E5%B0%84-JDK%E6%96%B0%E7%89%B9%E6%80%A7/
Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.