1、使用URLConnection去下载网上任意一个资源
BufferedOutputStream bo = null; BufferedInputStream bi = null; URL url = null; HttpURLConnection urlConnectio = null; try { url = new URL("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg3.doubanio.com%2Fview%2Frichtext%2Fs%2Fpublic%2Fp247984790.jpg&refer=http%3A%2F%2Fimg3.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1651837648&t=2e15f7e1478d327b1a9b5061680d4def"); urlConnectio = (HttpURLConnection) url.openConnection(); InputStream is = urlConnectio.getInputStream(); bi = new BufferedInputStream(is); FileOutputStream fos = new FileOutputStream("wi.jpg"); bo = new BufferedOutputStream(fos); int i = -1; while ((i = bi.read()) != -1) { bo.write(i); } } catch (Exception e) { e.printStackTrace(); }finally { urlConnectio.disconnect(); if (bo!=null){ try { bo.close(); } catch (IOException e) { e.printStackTrace(); } } if (bi!=null){ try { bi.close(); } catch (IOException e) { e.printStackTrace(); } } }
2、分别使用一下5种方式获取Class对象
1 使用数据类型.class的方式可以获取对应类型的Class对象。
2 使用引用/对象.getClass()的方式可以获取对应类型的Class对象。
3 使用包装类.TYPE的方式可以获取对应基本数据类型的Class对象。
4 使用Class.forName()的方式来获取参数指定类型的Class对象。
5 使用类加载器ClassLoader的方式获取指定类型的Class对象。
public static void main(String[] args) throws ClassNotFoundException { Class c1=String.class; System.out.println("c1:"+c1); String s="ss"; c1=s.getClass(); System.out.println("c1:"+c1); c1=Integer.TYPE; System.out.println("c1:"+c1); c1 = Class.forName("java.lang.String"); System.out.println("c1:"+c1); ClassLoader classLoader = zuo02.class.getClassLoader(); c1=classLoader.loadClass("java.lang.String"); System.out.println("c1:"+c1);
3、Constructor练习
1.使用原始方式以无参形式构造Person类型的对象并打印
2.使用反射机制以无参形式构造Person类型的对象并打印
3.使用原始方式以有参方式构造Person类型的对象并打印
4.使用反射机制以有参方式构造Person类型的对象并打印
5.使用反射机制获取Person类中所有的公共构造方法并打印
public static void main(String[] args) throws Exception { Person p1 = new Person(); System.out.println(p1); BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("1.txt"))); String s = br.readLine(); Class c1 = Class.forName(s); Object o = c1.newInstance(); if (o instanceof Person){ Person p2 = (Person) o; System.out.println("通过配置文件+反射机制创建对象 : " + p2); } br.close(); Person p3 = new Person("下坡" , 23); System.out.println("原始方式 有参构造器创建对象 : " + p3); Class c3 = Person.class; Constructor constructor = c3.getConstructor(String.class, int.class); Object o1 = constructor.newInstance("小明", 26); System.out.println("反射机制 有参构造器创建对象 : " + o1); Constructor[] constructors = c3.getConstructors(); for (Constructor ct : constructors){ System.out.println("构造方法的访问修饰符:" + ct.getModifiers()); System.out.println("构造方法的方法名:" + ct.getName()); Class[] parameterTypes = ct.getParameterTypes(); System.out.println("构造方法的所有的参数列表:"); for (Class cs : parameterTypes){ System.out.print(cs + " "); } System.out.println(); System.out.println("------------------"); } } } class Person { private String name ; private int age ; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }