関数型インターフェースの配列の作り方

関数型インターフェースを勉強し始めた者です。 関数型インターフェースの配列はどのように作ればよいのでしょうか? 関数配...

unokwave さんからの 回答

  • 2019/04/26 01:27
  • 回答No.1
unokwave

ベストアンサー率 59% (970/1643)

[技術者向] コンピューター カテゴリマスター
JDK 1.8とは古いですね。

>new Function[3];
そのワーニングの内容そのままですよ。
new Function<Integer,Integer>[3]
という具合に、型に依存する引数を省略せずに記述してください。
補足コメント
mental_HELLth

お礼率 66% (2/3)

回答いただきましてありがとうございます!
変更してみたのですが、今度は以下のエラーが発生しました。。。

Function<Integer,Integer> の総称配列を作成できません

せっかく回答していただいたのにすみません。。。
JDKが古いのは研修で使っているのがこのバージョンだからです。
投稿日時:2019/04/26 14:24
この回答にこう思った!同じようなことあった!感想や体験を書こう!
この回答にはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
  • javaのGenericsが良く分かりません Java

    かなり以前に java プログラミングを少しばかりやっていたので java は少し分かるのですが、最近 また java プログラミング始めてみたのですが、Generics なる機能が「Java SE5.0から導入されたようですが、良く分かりません。 ご存知の方がいらしたら どうか ご教授下さいませm(_ _)m 開発環境 eclipse java 8 class Box<T> { // Object obj; T obj; @SuppressWarnings("unchecked") public T getT(){ return obj; } public void setT(T o){ obj = o; } @SuppressWarnings("unchecked") public void setTExtends(Box<? extends T> o){ obj = (T)o; } } Box<Number> boxN = new Box<Number>( ); Box<Integer> boxI = new Box<Integer>( ); boxN.setT((Number)new Integer(1)); // 当然、正常にコンパイルされる。 boxN.setT(new Integer(1)); // なぜか正常にコンパイルされる。 boxN.setT(boxN.getT()); // 正常にコンパイルされる。 boxN.setT(boxI.getT()); // なぜか正常にコンパイルされる。 boxN.setTExtends((Number)new Integer(1)); // なぜかコンパイル・エラーになる。 boxN.setTExtends(new Integer(1)); // なぜかコンパイル・エラーになる。 boxN.setTExtends(boxN.getT()); // なぜかコンパイル・エラーになる。 boxN.setTExtends(boxI.getT()); // なぜかコンパイル・エラーになる。 boxI.setT(new Integer(1)); // 当然、正常にコンパイルされる。 boxI.setT(boxI.getT()); // 当然、正常にコンパイルされる。 boxI.setTExtends(new Integer(1)); // なぜかコンパイル・エラーになる。 boxI.setTExtends(boxI.getT()); // なぜかコンパイル・エラーになる。...

  • Eclipse内でのroot実行 その他(ソフトウェア)

    表題について、ご教授いただきたく投稿いたします。 端的に申すと「Eclipse内でのプログラムの実行にroot権限をもたせるにはどうすればよいのか」ということです。 現在Javaを用いてパケットを生成するプログラムを作成しております。 開発環境にはEclipse SDK 4.2.0 Junoを用いており、パケット生成にはJpcapライブラリ(ver .7最新)を利用しています。 OSはMac OS X10.7.5(Lion)です。 例えばJpcapのサンプルプログラム内の内に以下のような部分があります。 23行目 : NetworkInterface device=JpcapCaptor.getDeviceList()[Integer.parseInt(args[0])]; デバイスリスト配列の中から引数で与えた番号のインターフェースを格納するコードです。 こういったコードを含むプログラム全体をEclipseの実行ボタンで実行すると以下のようなエラーが発生します。 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at Traceroute.main(Traceroute.java:23) 同様のプログラムをコマンドラインからsudoで実行したところ、エラーは発生せず正常に動作しました。 そのため、Eclipse内での実行にsudo権限がないためデバイス周りへのアクセスなどができなかったことが原因と考えています。 つきまして開発を容易にするため、Eclipse内でもsudo実行できる方法をご存知の方がおりましたら、ぜひともご教授お願い致します。 ちなみにsudo open -a EclipseでEclipseの起動自体にsudoをつけてみましたが、こちらでは上手くいきませんでした。 どうぞよろしくお願い致します。...

  • VB.net キャレットの幅の変更をしたい Visual Basic

    OS:Windows 7 64bit 開発環境:Visual Studio 2013 Express リッチテキストボックスでキャレットの幅を変更したいのですが、うまくいきません。 ------------------------------------------------------------- 'キャレットを作成する Private Declare Function CreateCaret Lib "user32" _ (ByVal hWnd As IntPtr, _ ByVal hBitmap As IntPtr, _ ByVal nWidth As Integer, _ ByVal nHeight As Integer _ ) As Boolean 'キャレットを表示する Private Declare Function ShowCaret Lib "user32" _ (ByVal hWnd As IntPtr) As Boolean Private Sub RichTextBox1_Enter(sender As Object, e As EventArgs) Handles RichTextBox1.Enter 'CreateCaret(RichTextBox1.Handle, IntPtr.Zero, 7, 15) CreateSolidCaret(5, 10) ShowCaret(RichTextBox1.Handle) End Sub ------------------------------------------------------------- 以上のようにして RichTextBox1 にフォーカスが来た時にキャレットの幅を変えるようにしているのですが、一度だけフォーカスが来た時にほんの一瞬だけ四角いキャレットが見えるのですが、すぐにI型に戻ってしまいます。 ググっても上記ソースくらいしか見つかりませんでした。 どなたかご享受願えませんでしょうか? よろしくお願い致します。...

  • notifyAll()の挙動について Java

    こんにちは、マルチスレッドを勉強し始めた者です。 私の見立てが間違っていなければ、表題のとおり、notifyAllがどのように他のスレッドにwaitの解除を通知しているかを知りたいです。 事の始まりはsleep sortをマルチスレッドで実装しようと思ったことです。 sleep sortは表示までの時間がずれないことが重要だと考えましたので、すべてのスレッドが一斉に動いたほうが良いと思いました。 そこでネットで調べたところ、waitとnotifyAllを使うことでこれが実現できると考えまして、この二つを用いて実装を試みました。 以下がコードになります。 環境:Windows 7 64bit IDE:Eclipse 4.5.2 JDK:1.8 【SleepSortSample.java】 package exp01; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; public class SleepSortSample { public synchronized void print(int n){ try { wait(); Thread.sleep(n*10); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } System.out.print(n+","); } public synchronized void note(){ notifyAll(); } public static void main(String...args) { SleepSortSample sleepSortSample = new SleepSortSample(); List<Integer> list = IntStream.range(0, 30).boxed().collect(Collectors.toList()); Collections.shuffle(list); list.stream().forEach(c -> System.out.print(c + ",")); System.out.println(); for (Integer integer : list) { new Thread(()->sleepSortSample.print(integer.intValue())).start(); } new Thread(sleepSortSample::note).start(); } } ------------------------------------------ しかしながら、このコードだと以下のように全くソートが行われていません。 【出力例】 17,19,18,24,13,0,27,14,6,29,28,20,5,25,12,16,26,23,3,22,10,9,21,1,11,8,2,15,4,7, 7,4,15,2,8,11,1,21,9,10,22,3,23,26,16,12,25,5,6,20,28,14,29,13,27,0,17,18,24,19, このことから察するにnotifyAllはすべてのスレッドに同時に告知をするものではないことと、この告知に意外と時間がかかる、と言う風に推察しました。 ですが、公式ドキュメントを読んでもそのことについての記述が無いため、この考えが正しいかどうかの確認が出来ませんでした。 どなたかご存知の方がいれば教えていただきたく思います。 それともし可能ならすべてのスレッドを同期させる良い方法も教えていただけると幸いです。 よろしくお願いします。 ※OKWAVEより補足:「Webシステム開発」についての質問です。...

  • Windows7でレコオープンに時間がかかる Visual Basic

    初めて投稿させて頂きます。 今まで自社で開発しているソフトを、エンドユーザー環境は WINDOWS XP PRO/ACCESS2000(インストール)/VB6 SP6(インストール) で納品していました。 ユーザーが処理するインターフェースはVB6のEXEのみ、 データはクライアントPC内にACCESS2000のMDBに格納されるのみです。 この度、エンドユーザーのパソコン新調につき、エンドユーザー環境が WINDOWS7 PRO(SP1なし、HDDはRAID 1)/ACCESS2003(インストール)/VB6 SP6(インストール) となりました。 対応するために、自社の開発環境は今までの旧エンドユーザー環境と同じ WINDOWS XP PRO/ACCESS2000/VB6SP6 で開発し、 テストのため、エンドユーザーからデータを全て格納しているMDBを WINDOWS 7 PROにコピーして移行し、EXEも上記開発環境で作成・コンパイル したものをコピーしてテストしたのですが、作成したVB6プログラムの一つにて、 Visual Basic は応答していません 画面が出て、画面内の問題の詳細の表示をクリックして見てみると、 説明:   問題が発生したため、このプログラムと Windows の対話が停止しました。 問題の署名:  問題イベント名: AppHangB1  アプリケーション名: VB6.EXE ~省略~ と出て、処理が次に進むまで1~3分待たされるという現象が起きます。 以下、その現象が発生するソースコードです。 ------------------------------------------------------------------------ ※ 参照設定はMicrosoft DAO 3.6 Object Library にチェック Dim GlbJETWS As Workspace Dim GlbJETDB As Database Dim strSQL as String Dim rs As Recordset ' lngMSCode は フォーム上の数値 ' lngDno は フォーム上の数値 Set GlbJETWS = Workspaces(0) Set GlbJETDB = GlbJETWS.OpenDatabase("C:\UserData.mdb") strSQL = "SELECT * FROM JISSEKI" strSQL = strSQL & " WHERE MSCode=" & lngMSCode & " AND DNo=" & lngDno Set rs = GlbJETDB.OpenRecordset(strSQL, dbOpenSnapshot) ------------------------------------------------------------------------ 最後の行、 Set rs = GlbJETDB.OpenRecordset(strSQL, dbOpenSnapshot) を処理した段階で起こります。MSCodeとDNoは主キーに設定しており、 JISSEKIテーブルのレコード件数は約32,000件です。 必ず起こるという訳でもなく、一瞬で次に進む場合もあります。 色々調べてみましたが対処法がわからず困っています。 どなたか、対処法が分かる方がおられましたら、ご教授願います。 以下、Visual Basic は応答していません 画面の全文です。 説明: 問題が発生したため、このプログラムと Windows の対話が停止しました。 問題の署名: 問題イベント名: AppHangB1 アプリケーション名: VB6.EXE アプリケーションのバージョン: 6.0.97.82 アプリケーションのタイムスタンプ: 403acf6c 停止時の署名: 437c 停止の種類: 0 OS バージョン: 6.1.7600.2.0.0.256.48 追加の停止時の署名 1: 437c62729313fb05a4c4360af8eaeafb 追加の停止時の署名 2: 93f1 追加の停止時の署名 3: 93f1a3ce5c07082e07212059c24879e4 追加の停止時の署名 4: 437c 追加の停止時の署名 5: 437c62729313fb05a4c4360af8eaeafb 追加の停止時の署名 6: 93f1 追加の停止時の署名 7: 93f1a3ce5c07082e07212059c24879e4...

ページ先頭へ