次のコード行があります。
InputStreamReader isr = new InputStreamReader(MethodHandles.lookup().lookupClass().getResourceAsStream(csvFile));
誰かが初心者に説明できますか:
MethodHandles.lookup()
lookupClass()
getResourceasStream()
コードは機能し、jar にある csv ファイルにアクセスします。各メソッドが何をしているのかわかりません
行を次のように単純化できました。
InputStreamReader isr = new InputStreamReader (SQLUtilPROD.class.getResourceAsStream (csvFile));
しかし、まだ混乱しています。SQLUtilProd.class は何をしますか? また、getResourceAsStream は jar からファイルを取得することをどのように認識していますか? 複数の瓶がある場合はどうなりますか?
確かではありませんが、SQLUtil.class を使用してクラス オブジェクトを取得すると、getResourceAsStream がファイルの検索に使用する classLoader にアクセスできるようになると思います。
それが本当なら、classLoader は jar を含めるパスをどこに定義しますか?