java反射机制-一道阿里面试题
定义
java反射机制是指在java程序运行的过程中,根据任意一个实例化对象可以知道对应类的所有属性和方法,并且可以调用他的属性和方法。
也就是说你可以在程序运行的过程中,对于一个已经创建的对象,可以多次调用他属性和方法且不再创建新对象。
没有创建对象也可以直接通过反射的方式创建对象,Class.forName("类的目录");
参考 https://www.jianshu.com/p/9be58ee20dee
面试题
FileInputStream 在使用完以后,不关闭流,想二次使用可以怎么操作?
FileInputStream 中有一个方法是open 方法调用的是本地的打开文件的方法,fileinputStream 就是通过这个方法来打开文件的,所以如果要重写读取这个文件,不重新创建对象,那么只要调用这个方法就可以了。
习惯用BufferedReader,以下为示例
public static void main(String[] args) { try { String pathname = "C:\\Users\\HP\\Desktop\\test\\in.txt"; File filename = new File(pathname); FileInputStream inputStream = new FileInputStream(filename); InputStreamReader reader = new InputStreamReader(inputStream, "GBK"); BufferedReader br = new BufferedReader(reader); BufferedWriter out1 = new BufferedWriter(new FileWriter("C:\\Users\\HP\\Desktop\\test\\out1")); BufferedWriter out2 = new BufferedWriter(new FileWriter("C:\\Users\\HP\\Desktop\\test\\out2")); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); out1.write(line + "\n"); } Class in = inputStream.getClass(); Method open = in.getDeclaredMethod("open0", String.class); open.setAccessible(true); open.invoke(inputStream, pathname); while ((line = br.readLine()) != null) { System.out.println(line); out2.write(line + "\n"); } br.close(); out1.close(); out2.close(); } catch (Exception e) { e.printStackTrace(); } }

浙公网安备 33010602011771号