// 创建文件
File f = new File(“c:testmytest.txt”);
f.createNewFile(); // 创建mytest.txt文件到test目录下
// 修改文件名
File f = new File(“c:testmytest.txt”);
f.renameTo(new File(“c:test google .txt”));
把mytest.txt修改成google.txt
// 删除文件
File f = new File(“c:testmytest.txt”);
f.delete();
List< extends Number> foo3的 通配符 声明,意味着以下的赋值是合法的:
// Number “extends” Number (in this context)
List< extends Number> foo3 = new ArrayList< extends Number>();
// Integer extends Number
List< extends Number> foo3 = new ArrayList< extends Integer>();
// Double extends Number
List< extends Number> foo3 = new ArrayList< extends Double>();
现在考虑一下List< super T>
List< super Integer > foo3的通配符声明,意味着以下赋值是合法的:
// Integer is a “superclass” of Integer (in this context)
List< super Integer> foo3 = new ArrayList<Integer>();
// Number is a superclass of Integer
List< super Integer> foo3 = new ArrayList<Number>();
// Object is a superclass of Integer
List< super Integer> foo3 = new ArrayList<Object>();
读取操作通过以上给定的 赋值语句 ,你一定能从foo3列表中读取到的元素的类型是什么呢?你不能保证读取到Integer,因为foo3可能指向 List<Number>或者List<Object>。你不能保证读取到Number,因为foo3可能指向 List<Object>。唯一可以保证的是,你可以读取到Object或者Object子类的对象(你并不知道具体的子类是什么)。
这是因为这个jar中缺少了Main方法的定义。此时你可以这么做,通过解压工具进入到jar包中,修改META-INF下的MENIFEST.MF文件。
12 | Manifest-Version: 1.0Main-Class: com.test.类名 |
注意Main-Class后面的 冒号 后面要有空格、并且最后一行要空着(如果没有最后一行的的回车,就会报找不到Main-Class这个属性的错误)。
如果你使用 JAVA c以及java编译类
如果你有一个类,这个类依赖于其他的jar包,比如:test.java依赖a.jar、b.jar。
那么可以执行javac进行编译:
123 | javac -cp a.jar;b.jar test.java=>注意如果是Linux,分号要换成冒号javac -cp a.jar:b.jar test.java |
然后使用java执行:
123 | java -cp .;a.jar;b.jar test=>如果是linux,分号换成冒号java -cp .:a.jar:b.jar test |
编写shell脚本
以上广州中星老师提供。