请教关于JDK1.4和ENUM的问题

SneakerMe 2012-05-16 10:22:45
项目使用的是JDK1.4版本,在xlsx2csv的时候代码
enum xssfDataType {
BOOL, ERROR, FORMULA, INLINESTR, SSTINDEX, NUMBER,
}
错误提示为
- 'enum' should not be used as an identifier, since it is a reserved keyword from source level 1.5 on

请问有没有方法可以在JDK1.4中使用enum枚举。谢谢!
...全文
232 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
SneakerMe 2012-05-18
  • 打赏
  • 举报
回复
嗯,可以了。在写入csv文件的时候,没有释放掉input流。非常感谢,一直跟着我的帖子帮忙回答问题!!
SneakerMe 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

Java code
String path = "";
String filename = "2";
String fileType = ".xlsx";
File f = new File(path + filename + fileType);
// f.delete();
System.out.prin……
[/Quote]

System.out.println(fileTemp.delete());结果为false。
但是我已经在delete之前都close了。
SneakerMe 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

Java code
String path = "";
String filename = "2";
String fileType = ".xlsx";
File f = new File(path + filename + fileType);
// f.delete();
System.out.prin……
[/Quote]

没有啊,打印出来的路径文件名都是正确的。但是就是delete删除不掉。。。
xls文件可以的。xlsx文件就不行。
sdojqy1122 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
没有啊,打印出来的路径文件名都是正确的。但是就是delete删除不掉。。。
xls文件可以的。xlsx文件就不行。
没有啊,打印出来的路径文件名都是正确的。但是就是delete删除不掉。。。
xls文件可以的。xlsx文件就不行。
[/Quote]
把该关的关掉,能删掉的,你自己试试。新建个demo做个实验就知道了,我估计你还有资源没释放。
	public static void main(String args[]) throws FileNotFoundException {
String path = "";
String filename = "b";
String fileType = ".xlsx";
File f = new File(path + filename + fileType);
FileInputStream fis = new FileInputStream(f);
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
// f.delete();
System.out.println(f.getAbsolutePath());
System.out.println(f.delete());
}

SneakerMe 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

Java code

public class XssfDataType {
static final XssfDataType BOOL = new XssfDataType(0);
static final XssfDataType ERROR = new XssfDataType(1);
static final XssfDataType FORMULA = ne……
[/Quote]

还要请教一下。

private XssfDataType nextDataType;

因为在enum枚举里面需要定义switch case方法,
当 switch (nextDataType)时候,
nextDataType定义类型是必须要int类型么?
Cannot switch on a value of type XssfDataType. Only convertible int values or enum constants are permitted

谢谢!
sdojqy1122 2012-05-16
  • 打赏
  • 举报
回复

public class XssfDataType {
static final XssfDataType BOOL = new XssfDataType(0);
static final XssfDataType ERROR = new XssfDataType(1);
static final XssfDataType FORMULA = new XssfDataType(2);
static final XssfDataType INLINESTR = new XssfDataType(3);
static final XssfDataType SSTINDEX = new XssfDataType(4);
static final XssfDataType NUMBER= new XssfDataType(5);
int ordin;//下标
XssfDataType(int ordin){
this.ordin = ordin;
}
}
SneakerMe 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

你当 XssfDataType这个用?
[/Quote]

如果前面定义了static final int了,后面的xssfdatatype.number肯定也是int的,前面的this.nextdatatype也要随之改成int来判断么?
sdojqy1122 2012-05-16
  • 打赏
  • 举报
回复
你当 XssfDataType这个用?
SneakerMe 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

class XssfDataType{
static final int BOOL = 0;
static final int ERROR = 1;
static final int FORMULA = 2;
static final int INLINESTR = 3;
static final int SSTINDEX = 4;
static final int NUMBER= ……
[/Quote]

定义了int变量后,
private XssfDataType nextDataType;

this.nextDataType = XssfDataType.NUMBER;
后面的类型变量出错了。是不是需要把int类型改为xssfdatatype?

谢谢。
sdojqy1122 2012-05-16
  • 打赏
  • 举报
回复
class XssfDataType{
static final int BOOL = 0;
static final int ERROR = 1;
static final int FORMULA = 2;
static final int INLINESTR = 3;
static final int SSTINDEX = 4;
static final int NUMBER= 5;
}
龙四 2012-05-16
  • 打赏
  • 举报
回复
木有办法,jdk1.4不支持enum关键字

自己写个类代替吧,enum也是类,不过是块语法糖而已
sdojqy1122 2012-05-16
  • 打赏
  • 举报
回复
	String path = "";
String filename = "2";
String fileType = ".xlsx";
File f = new File(path + filename + fileType);
// f.delete();
System.out.println(f.getAbsolutePath());
System.out.println(f.delete());

路径不对吧。
SneakerMe 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:

switch (nextDataType.ordinal){
case 0:
break;
case 1:
break;
....
}
这样不行吗?


问题解决了。非常感谢。
再问一下,xlsx文件读取后删除
File fileTemp = new File(path + filename + fileTypeNew);
fileTem……
[/Quote]

删除部分代码是
if(filetype.equals("xls")){

File fileTemp = new File(path + filename + fileType);
fileTemp.delete();

}

if(filetype.equals("xlsx")){


File fileTemp = new File(path + filename + fileTypeNew);
fileTemp.delete();

}
谢谢!
SneakerMe 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

switch (nextDataType.ordinal){
case 0:
break;
case 1:
break;
....
}
这样不行吗?
[/Quote]

问题解决了。非常感谢。
再问一下,xlsx文件读取后删除
File fileTemp = new File(path + filename + fileTypeNew);
fileTemp.delete();
为什么删不掉呢?

.xls文件可以, .xlsx文件就删除不掉?
前面已经.flush .close掉了fileout流了。
非常感谢!
sdojqy1122 2012-05-16
  • 打赏
  • 举报
回复
switch (nextDataType.ordinal){
case 0:
break;
case 1:
break;
....
}
这样不行吗?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧