問題タブ [erasure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
46 参照

java - 消去タイプとブリッジング方法の明確化

次のコードは、ジェネリックの Oracle ドキュメントから取られています -

このコードの私の理解 -

Q - メソッドはsetDataオーバーライドまたはオーバーロードされていますか?

私の理解では、MyNodeが拡張されているためNode<Integer>、type パラメータの値Tが に設定されていIntegerます。

そのため、クラスには T= Integer のNodeメソッドがあり、クラスにはメソッドがあります。setData(Integer data)MyNodesetData(Integer data)

署名が同じであるため、オーバーライドされます。

Q- メソッド setData は消去後でもオーバーライドされますか? 私の理解 -

<T>設定方法を消してからにNodeなり、setData(Object data)

の set メソッドはMynode-setData(Integer data)型パラメーターがないため、削除するものは何もありません。

しかし、これは過負荷です。

Q - オーバーロードまたはオーバーライドが必要でしたか?

私の理解 - 消去前に定義されたメソッドの外観から、オーバーライドが必要でした。

Q - 消去後のオーバーライドを達成するにはどうすればよいですか?

私の理解 -ブリッジ法による。例えば:

私の理解は正しいですか?

また、 class MyNode extends Node<Integer>いつにInteger渡され<T>ますか? スーパーが呼び出されたとき?