次のアウトラインの例を検討してください。
interface IBar{ /*...*/ }
class SomeBar implements IBar { /*...*/ }
abstract class AbstractFoo
{
IBar context;
/* Some default implementations of methods manipulating 'context' */
}
class SomeFoo extends AbstractFoo
{
final SomeBar context = (SomeBar)super.context; // <-- AAA
/* Some methods that reference additional non-IBar methods. */
// The line AAA allows us to use:
// context.additionalMethod()
// instead of
// ((SomeBar)context).additionalMethod()
}
私の質問は、ライン「AAA」についてです。ここでの目標は、スーパークラスから継承されたコンテキスト メンバーが参照されるたびにキャストする必要がないようにすることです。言い換えれば、私はむしろ
context.additionalMethod()
それ以外の
((SomeBar)context).additionalMethod()
毎回。
このアプローチは機能しているように見えますが、正しいかどうか、またはこのようなことを行うことに問題があるかどうか疑問に思っています。私の場合、これはあいまいさにつながることはありませんが、一般的にどのようになるかはわかりました。
context
また、ここで新しいオブジェクトを作成するのではなく、メソッドが参照メンバーを異なる方法で解釈するようにしたいだけです。
別の方法は、 のcontext
ような名前に変更することだと思いますrawContext
が、これが望ましいかもしれません。
前もって感謝します