問題タブ [language-concepts]
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.
java - ネストされた静的クラスの Java インポート ワイルドカード アクセシビリティ
型インポートのマルチレベルのネストされたクラスに関して、Java のアクセシビリティ (またはスコープ) はどのように機能しますか? 例:
ClassA.java:
Main.java
ワイルドカードを使用する場合、インポート ステートメントは NestedAB タイプをインポートしません。おそらく同様の質問により、 Type-Import-on-Demand Declarationsを明確にする Java スペック シートにたどり着きました。
type-import-on-demand 宣言を使用すると、名前付きパッケージまたは型のすべてのアクセス可能な型を必要に応じてインポートできます。
質問に対する受け入れられた回答は、オンデマンドのインポート宣言が再帰的ではないことを意味します。その理由は、おそらくJavaが「名前付きタイプのすべてのアクセス可能なタイプ」と見なすものであり、パッケージの一般的な概念ですが、ドットを接続してアクセス可能なタイプがネストされたクラスに関して何を意味するかを理解していません。
タイプのインポートとアクセシビリティがJavaでどのように機能するように見えるかを説明してください(ワイルドカードインポートの議論の余地のある使用を無視しながら)
php - 親メソッドをオーバーロードするとき、PHP8.1 が互換性のない戻り値の型を廃止する方向に変更されたのはなぜですか?
query
クラスのメソッドをmysqli
次のようにオーバーロードしました。
PHP8.0 ではそれは問題ではありませんでした。ただし、PHP8.1 の時点で、次のエラーが発生しています。
非推奨: の戻り値の型は
Repository\MySql\MySql::query($sql, $resultmode = null)
と互換性があるmysqli::query(string $query, int $result_mode = MYSQLI_STORE_RESULT): mysqli_result|bool
か、30 行目#[\ReturnTypeWillChange]
の通知を一時的に抑制するために属性を使用する必要がありますrepository\src\MySql\MySql.php
エラーを修正する方法はわかっています。独自のカスタム オブジェクトを返したいので、おそらくメソッドの名前を変更することになるでしょう。
質問
おそらく言語理論を使用したり、他の言語と比較したりして、理論的およびオブジェクト指向の観点からこの変更の必要性を捉えた答えを探しています。
なぜこの変更が必要だったのですか?この変更を行う必要性または理由は何でしたか? クラスを拡張するときにPHPでオーバーロードされた戻り値の型を許可する方法は何ですか?