加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

子类的Java解决方法被强制在构造函数中调用super()?

发布时间:2020-12-15 08:41:28 所属栏目:Java 来源:网络整理
导读:我正在编辑一个使用RandomAccessFile对象的程序,我想提出我自己的RandomAccessFile类,它使用不同于文件对象的数据源(它是一个Amazon webservices S3对象,但这是无关紧要的) 我想基本上创建一个名为RandomAccessS3的类,它将RandomAccessFile作为其超类,所以我
我正在编辑一个使用RandomAccessFile对象的程序,我想提出我自己的RandomAccessFile类,它使用不同于文件对象的数据源(它是一个Amazon webservices S3对象,但这是无关紧要的)

我想基本上创建一个名为RandomAccessS3的类,它将RandomAccessFile作为其超类,所以我可以简单地说

RandomAccessFile raf = new RandomAccessS3();

因此保持现有代码相同.我将简单地覆盖RandomAccessFile中的每个方法.

问题是在子类RandomAccessS3的构造函数中,我被迫使用super(文件,模式)调用RandomAccessFile的构造函数,该函数将参数作为文件名,如果文件无效则抛出错误并终止.

我不能用try / catch块包围super()调用,因为super需要是构造函数中的第一行.我可以提供一个虚拟文件,但我不想强迫用户这样做.这有什么简单的方法吗?

谢谢!

解决方法

这没有简单的方法.构造函数用于确保实例处于良好/有效状态,而RandomAccessFile的部分契约是实例链接到有效文件.

作为一个巨大的黑客,我想你可以创建一个临时文件,只是为了满足RandomAccessFile构造函数.

更好的方法可能是创建一个新接口并将RandomAccessFile的引用更新到新接口.然后,实现接口两次,一次使用RandomAccessFile,一次使用S3调用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读