这个函数输入一个 file,返回 file 的信息。long[0] 是长度,long[1] 是最后修改。不想定义其他的 class,如何更加优雅的返回信息?
private @Nullable long[] getFileInfo(File file) {
try {
long length = file.length();
long modified = file.lastModified();
return new long[]{length, modified};
} catch (Exception e) {
return null;
}
}
1
iamaprin 2018-04-02 13:56:57 +08:00 via Android 1
将长度及最后修改时间包装为一个对象类,比如 FileInfo,易于拓展,比如以后需要返回文件名称,使用 index 标识维护麻烦。方法不处理异常,建议直接抛出或者重新封装为自定义异常抛出
|
2
whileFalse 2018-04-02 14:55:02 +08:00
lz 这写法好像 c...
|
3
raiz 2018-04-02 15:19:49 +08:00 1
这异常只有 null 异常吧, 直接判断好了,别那么依赖异常机制吧。
|
4
gen900 2018-04-02 16:16:43 +08:00
返回 对象啊,返回数组?这谁教的
|
5
AlisaDestiny 2018-04-02 17:08:12 +08:00 3
你这样还不如不要这个方法。
|
6
cysroad 2018-04-02 17:19:41 +08:00 2
File 类既然有 length()和 lastModified() 方法,为什么还要额外写一个函数来使用
返回值还放在一个数组里面用下标访问 异常处理也有问题,为什么不放在这个方法外来判断 file 对象的 null,而是捕获异常 ,用返回值判断 |
7
sudoz 2018-04-02 17:35:27 +08:00
@whileFalse 别黑 C 哈哈
|
8
zcm3579 2018-04-02 17:46:42 +08:00 1
总得有个对象包着 ,你这样还得记着每个索引对应哪个变量
|
9
Miy4mori 2018-04-02 18:02:13 +08:00
File 对象里就包含你要的 length 和 lastModified,写个函数再组装成数组通过下标访问是什么操作?
|
10
yippees 2018-04-02 19:26:52 +08:00
更加优雅?
眼拙没看出原来优雅在哪里 |
11
XinLake OP |
12
murmur 2018-04-02 20:58:40 +08:00
单纯为了省行数可以新建个对象 给他个 2 个参数的构造函数就行了
不过单纯为了省代码而省代码没意思 对象的好处就是扩展起来容易 尤其是 java 这种语法比较严的 |
13
XinLake OP @whileFalse
哈哈,这是 java,c 风格的括号不是这么打的吧 |
14
honeycomb 2018-04-02 21:40:43 +08:00 1
@XinLake
异常开销当然大 生成 Throwable 的时候会有一个很重的 native 调用 fillInStackTrace(),但可以关掉: Throwable(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) |
15
pwrliang 2018-04-03 00:39:48 +08:00
javafx.util.Pair<Long, Long>
|
16
Kongtou 2018-04-03 08:07:51 +08:00 via Android
你们懂什么叫异常吗,异常的语义是什么?
|
17
lihongjie0209 2018-04-03 08:41:01 +08:00
你考虑过调用者的感受吗
|
18
pinocc 2018-04-03 11:17:32 +08:00
合并成一行
|
19
johnidy 2018-04-03 12:09:08 +08:00
这个方法好像并没有什么用处
|