gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:33:31 25 4
gpt4 key购买 nike

我正在编辑一个使用 RandomAccessFile 对象的程序,我想提出我自己的 RandomAccessFile 类,该类使用文件对象以外的不同数据源(它是一个 Amazon webservices S3 对象,但这无关紧要)

我基本上想创建一个名为 RandomAccessS3 的类,它的父类(super class)是 RandomAccessFile,所以我可以简单地说

RandomAccessFile raf = new RandomAccessS3();

因此保持现有代码不变。我将简单地覆盖 RandomAccessFile 中的每个方法。

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

我不能用 try/catch block 包围 super() 调用,因为 super 必须是构造函数中的第一行。我可以提供一个虚拟文件,但我不想强制用户这样做。有什么简单的方法可以解决这个问题吗?

谢谢!

最佳答案

好吧,您实际上可以在父类(super class)上设置名称属性或其他内容。并在该类的构造函数中,将传入的 String 的值设置为属于该类的名称实例变量。

这样一来,所有派生类都必须在实例化子实例时传入一些东西,并且传递的值会延迟到父类。这样你就可以强制 super() 总是在导数中被调用。

关于强制在构造函数中调用 super() 的子类的 Java 解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com