問題タブ [eclipse-photon]

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 投票する
2 に答える
1338 参照

java - JDK 11 を使用して Collection.toArray() にジェネレーター関数を提供するにはどうすればよいですか?

JDK 11 ( https://marketplace.eclipse.org/content/java- 11-support-eclipse-photon-49 )。正常に動作しているようです (バージョン: 4.9 ビルド ID: I20180801-2000)。

JDK 11 ではtoArray()、Java.util.Collectionにメソッドの新しいオーバーライドがあります。

これはデフォルトのメソッドですが、オーバーライドされません。提供されたジェネレーター関数 (ハードコーディングされたゼロの引数を使用) によって返された値を別のオーバーライドに渡し、toArray()コレクションの内容を配列として返すだけです。

そのメソッドの Javadoc で説明されているように、次のように呼び出すことができます。

これは正常に機能し、 に対応する適切な長さの文字列の配列Collection<String>が返されます。

Javadoc には、「デフォルトの実装ではジェネレーター関数がゼロで呼び出され、結果の配列が toArray(T[]) に渡される」とも記載されています。

独自のジェネレーター関数を提供すると、(println()コンソール出力に示されているように) 呼び出されますが、そのapply()メソッドの戻り値は無視されるようです。toArray(String[]::new)ジェネレーター関数によって返される配列の内容に関係なく、呼び出したようです。

MCVE は次のとおりです。

MCVE を実行して生成されるコンソール出力は次のとおりです。

array1: [This, is, a, list, of, strings]

intFunc: sz: 0

intFunc: 返される配列: [A, B, C]

array2: [This, is, a, list, of, strings]

intFunc: sz: 4

intFunc: 返される配列: [A, B, C, D]

array3: [This, is, a, list, of, strings]

出力は、ジェネレーター関数が何をするかは問題ではないことを示しています - それが返す配列は使用されていません。

私の質問は、ジェネレーター関数によって返された配列を使用するためにこの新しい実装を取得するにはどうすればよいですかtoArray()、それとも不可能なことを試みていますか?


コメントと Nicolai からの回答に基づいて更新します。

サンプル コードの問題は、ジェネレーターではなく、テスト ケースにありました。たまたまジェネレーターがコレクションよりも少ない要素の配列を返す原因となったため、代わりに新しい配列が割り当てられ、コレクション内の要素の数を正確に保持しました。

コレクションより大きい配列を返すテスト ケースは、期待どおりに機能します。たとえば、このコード:

次のコンソール出力が得られます。

intFunc: sz: 9

intFunc: 返される配列: [A, B, C, D, E, F, G, H, I]

array4: [This, is, a, list, of, strings, null, H, I]

SO の質問Collections emptyList/singleton/singletonList/List/Set toArrayは、返された配列内に null 値がある理由を説明しています。

0 投票する
0 に答える
780 参照

java - すべての解決策を試しましたが、エラーを修正できません: ORA-12519、TNS: 適切なサービス ハンドラが見つかりません

Eclipse から Oracle データベースに ping を実行できません。最大プロセス数を 1000 に変更して、データベースを再起動しようとしました。その上、私はGoogleから多くのソリューションを試しましたが、すべてが機能しません. イベントがEclipseを再インストールし、私のOracleデータベースもそれを解決できません。誰でも私が解決策を理解するのを手伝ってくれますか?

以下にエラーの詳細を示します。

java.sql.SQLException: リスナーが次のエラーで接続を拒否しました: ORA-12519、TNS: 適切なサービス ハンドラが見つかりません

原因: oracle.net.ns.NetException: リスナーが次のエラーで接続を拒否しました: ORA-12519、TNS: 適切なサービス・ハンドラが見つかりません