我正在编辑一个使用RandomAccessFile对象的程序,我想创建自己的RandomAccessFile类,该类使用与文件对象不同的数据源(它是Amazon Web服务S3对象,但这是无关紧要的)。
我想基本上创建一个名为RandomAccessS3的类,它以RandomAccessFile作为其超类,这样我就可以简单地说:
RandomAccessFile raf = new RandomAccessS3();
因此保持现有代码不变。我将简单地覆盖RandomAccessFile中的每个方法。
问题在于,在子类RandomAccessS3的构造函数中,我被强制使用super(file, mode)调用RandomAccessFile的构造函数,该函数需要一个文件名作为参数,并且如果文件无效,则会引发错误并停止运行。
我不能使用try/catch块包围super()调用,因为super必须是构造函数中的第一行。我可以提供一个虚拟文件,但我不想强制用户这样做。有没有简单的方法解决这个问题?
谢谢!
我想基本上创建一个名为RandomAccessS3的类,它以RandomAccessFile作为其超类,这样我就可以简单地说:
RandomAccessFile raf = new RandomAccessS3();
因此保持现有代码不变。我将简单地覆盖RandomAccessFile中的每个方法。
问题在于,在子类RandomAccessS3的构造函数中,我被强制使用super(file, mode)调用RandomAccessFile的构造函数,该函数需要一个文件名作为参数,并且如果文件无效,则会引发错误并停止运行。
我不能使用try/catch块包围super()调用,因为super必须是构造函数中的第一行。我可以提供一个虚拟文件,但我不想强制用户这样做。有没有简单的方法解决这个问题?
谢谢!
RandomAccessS3
不是RandomAccessFile
,所以你的想法从长远来看并不合理。我建议你重构代码,使用比RandomAccessFile
更通用的东西。 - Oliver Charlesworth