网络程序,难点在线程css
package day1901_反射; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Scanner; public class Test1 { public static void main(String[] args) throws Exception { System.out.println("输入完整类名"); String s = new Scanner(System.in).nextLine(); // 得到这个类的'类对象' Class<?> c = Class.forName(s); // 得到包名, 类名 ,简写类名 String p = c.getPackage().getName(); String n = c.getName(); String sn = c.getSimpleName(); System.out.println(p); System.out.println(n); System.out.println(sn); System.out.println("----成员变量------"); f1(c); System.out.println("----构造方法------"); f2(c); System.out.println("----方法------"); f3(c); } private static void f3(Class<?> c) { /* * Method 对象, 封装方法的定义信息 * public static void f(int i , String s)throws X,Y,Z */ Method[] a = c.getDeclaredMethods(); for (Method f : a) { String n = f.getName(); // 构造方法参数的类型 (int.class, String.class); Class<?>[] p = f.getParameterTypes(); System.out.println(n+"("+Arrays.toString(p)+")"); } } private static void f2(Class<?> c) { /* * Constructor 构造方法的封装对象 * * public A(int a, String s) throws X,Y,Z * */ Constructor<?>[] a = c.getConstructors(); for (Constructor<?> t : a) { String n = c.getSimpleName(); // 构造方法参数的类型 (int.class, String.class); Class<?>[] p = t.getParameterTypes(); System.out.println(n+"("+Arrays.toString(p)+")"); } } private static void f1(Class<?> c) { /* * Field对象 * 封装了成员变量的定义信息 * */ Field[] a = c.getDeclaredFields(); for (Field f : a) { System.out.println(f.getType().getSimpleName()+f.getName()); } } }
package day1901_反射; import java.lang.reflect.Constructor; import java.util.Scanner; public class Test2 { public static void main(String[] args) throws Exception { System.out.println("输入类名"); String s = new Scanner(System.in).nextLine(); Class<?> c = Class.forName(s); Object o1 = null; Object o2 = null; /* * 新建 o1,执行无参构造 * 新建 o2,执行有参构造 */ try { o1 = c.newInstance(); System.out.println("o1:"+o1);// 默认执行 o1 的toString } catch (Exception e) { // TODO: handle exception System.out.println("o1: 不能执行无参构造"); } System.out.println("-----------------------------"); try { Constructor<?> t = c.getConstructor(int.class); o2 = t.newInstance(666); System.out.println("o2: "+o2); } catch (Exception e) { // TODO: handle exception System.out.println("o2: 不能执行int参数构造方法"); } } }
package day1901_反射; import java.lang.reflect.Field; import day0802.Student; /* * 跨项目不能直接访问,须要项目关联 * 左侧选中须要关联项目的项目,右键弹出选中build path 选中项目project, */ public class Test3 { public static void main(String[] args) throws Exception, SecurityException { // Student s = new Student(); Class<Student> c = Student.class; // 得到age变量 并赋值 Field f = c.getDeclaredField("age"); f.setAccessible(true); f.set(s, 21); System.out.println(s.getAge()); int a = (int)f.get(s); System.out.println(a); } }
package day1901_反射; import java.lang.reflect.Field; import java.lang.reflect.Method; import day0802.Student; /* * 跨项目不能直接访问,须要项目关联 * 左侧选中须要关联项目的项目,右键弹出选中build path 选中项目project, */ public class Test3 { public static void main(String[] args) throws Exception, SecurityException { // Student s = new Student(); Class<Student> c = Student.class; // 得到age变量 并赋值 Field f = c.getDeclaredField("age"); f.setAccessible(true); f.set(s, 21); System.out.println(s.getAge()); int a = (int)f.get(s); System.out.println(a); // 反射测试方法 Method gg = c.getMethod("getGender"); Method sg = c.getMethod("setGender", String.class); sg.invoke(s, "男"); Object r = gg.invoke(s); System.out.println(r); } }
package day1901_反射; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.lang.reflect.Method; import java.util.ArrayList; public class Runner { private static ArrayList<String> list = new ArrayList<String>(); // 静态初始化快 static { try { BufferedReader buf = new BufferedReader( new InputStreamReader( new FileInputStream( "/Users/dingzhijie/Desktop/file3.txt"), "UTF-8")); String line; while ((line = buf.readLine()) != null) { line = line.replace("\\s+", ""); if (line.length()==0) { continue; } list.add(line); } buf.close(); } catch (Exception e) { // TODO: handle exception throw new RuntimeException(e); } } public static void launch() { try { for (String s : list) { // 拆分字符串 String[] a = s.split(";"); // 得到类名 Class<?> c = Class.forName(a[0]); Object obj = c.newInstance(); // 得到方法名 Method m = c.getMethod(a[1]); m.invoke(obj); } } catch (Exception e) { // TODO: handle exception System.out.println("执行失败"); e.printStackTrace(); } } public static void main(String[] args) { System.out.println("main"); for (String string : list) { System.out.println(string); } System.out.println("--------------"); Runner.launch(); } }
package day1902_注解; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) // 单个 //@Target({ElementType.METHOD,ElementType.FIELD}) // 多个 @Retention(RetentionPolicy.RUNTIME) /* * 元注解 * * @Target * 设置注解目标: 类, 方法,成员变量, 参数... * * @Retention * 保留范围: * 源码文件 - 编译时注解信息被丢弃 - 编译器处理 * 字节码 - 类被加载到内存是丢弃 - 类加载器处理 * 运行期内存 - 在内存中存在,不会被丢弃 - 自定义注解使用 * */ //定义注解 @interface public @interface Test { // 注解的属性 // 若是不指定默认值, 使用时必须赋值 // int id(); int id() default 0; // 特殊的属性名, 有特殊待遇 // 若是单独赋值, 能够不写属性名 String value() default ""; }
package day1903_Junit; import org.junit.Test; /* * 引入Junit 开发包 * 右键点击项目 Build path - library - * add Library - Junit - Junit 4 * * * 直接运行便可测试 * 光标定位在测试方法上, 能够只执行单个测试方法 * 定位在类上是测试单个类的代码 * */ public class Test1 { @Test public void a(){ System.out.println("测试a"); } public void b(){ System.out.println("测试b"); } @Test public void c(){ System.out.println("测试c"); } @Test public void d(){ System.out.println("测试d"); } }
package day1904_网络爬虫; import java.io.IOException; import org.jsoup.Jsoup; import org.junit.Test; /* * 引入 Jsoup 开发包 * 右键点击项目 - Build path - add External jar 选中全部文件 */ public class Test1 { @Test public void test1() throws Exception { String s = Jsoup.connect("http://www.baidu.com") .execute() .body(); System.out.println(s); } @Test public void test2() throws Exception { String s = Jsoup.connect("http://www.jd.com/") .execute() .body(); System.out.println(s); } }