如何让Milton区分DriveItem子类中的文件与文件夹?
解决Milton区分DriveItem文件与文件夹的方法
要让Milton根据DriveItem自带的isFile()和isDirectory()方法自动区分文件和文件夹,你只需要调整注解的使用逻辑就行:
保留子资源获取方法的注解
别删掉getNextLevelDriveItems方法上的@ChildrenOf注解——它的作用只是告诉Milton“调用这个方法能拿到当前DriveItem的子资源列表”,和资源本身是文件还是文件夹没关系。代码保持不变:@ChildrenOf public List<DriveItem> getNextLevelDriveItems(DriveItem driveItem) { // ... 原有逻辑 return foldersAndFiles; }给类型判断方法加注解标记
在你的DriveItem类里,给判断文件夹的方法加上@IsFolder注解,让Milton知道用这个方法判断资源类型:- 如果DriveItem已经有
isDirectory()方法,直接给这个方法加注解就行:@IsFolder public boolean isDirectory() { // 你的原有实现 } - 要是不想改动原有方法,也可以新增一个专门的方法:
@IsFolder public boolean isFolder() { return this.isDirectory(); }
- 如果DriveItem已经有
Milton的自动识别逻辑
只要你的Milton用的是默认的注解驱动模式(一般项目都是这么配置的),它会自动:- 调用被
@IsFolder标记的方法,返回true就把这个DriveItem当成文件夹,会自动调用getNextLevelDriveItems加载子资源; - 返回
false就当成文件,不会去加载子资源,自动识别为文件类型。
- 调用被
这样一改,Milton就能完全跟着DriveItem自身的类型判断走,不再用@ChildrenOf强制统一所有资源的类型了。
内容的提问来源于stack exchange,提问作者kc2001
相关产品推荐
相关产品推荐

