タグ付けされた質問 「java-8」

このタグは、2014年3月18日にリリースされたJavaプラットフォームのバージョン8(内部番号1.8)であるJava 8に固有の質問に使用します。ほとんどの場合、javaタグも指定する必要があります。

3
Java8ストリームでのforEachとforEachOrdered
これらのメソッドは実行順序が異なることを理解していますが、すべてのテストで異なる順序の実行を実現することはできません。 例: System.out.println("forEach Demo"); Stream.of("AAA","BBB","CCC").forEach(s->System.out.println("Output:"+s)); System.out.println("forEachOrdered Demo"); Stream.of("AAA","BBB","CCC").forEachOrdered(s->System.out.println("Output:"+s)); 出力: forEach Demo Output:AAA Output:BBB Output:CCC forEachOrdered Demo Output:AAA Output:BBB Output:CCC 2つの方法で異なる出力が生成される場合の例を提供してください。


7
Java 8 StreamsFlatMapメソッドの例
私は次のJava update、すなわちをチェックしています:Java 8 or JDK 8。はい、私は焦ります。新しいものがたくさんありますが、理解できないことがあります。いくつかの簡単なコードです。 final Stream<Integer>stream = Stream.of(1,2,3,4,5,6,7,8,9,10); stream.flatMap(); javadocsは public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper) このストリームの各要素を、提供されたマッピング関数を各要素に適用することによって生成されたマップされたストリームのコンテンツで置き換えた結果で構成されるストリームを返します。マップされた各ストリームは、そのコンテンツがこのストリームに配置された後に閉じられます。(マップされたストリームがnullの場合、代わりに空のストリームが使用されます。)これは中間操作です。 誰かがflatMap、以前のJavaバージョンでそれJava[6,7]をコーディングする方法、およびを使用して同じルーチンをコーディングする方法について、いくつかの簡単な実際の例を作成していただければ幸いですJava 8。

4
このJava8ラムダがコンパイルに失敗するのはなぜですか?
次のJavaコードはコンパイルに失敗します。 @FunctionalInterface private interface BiConsumer<A, B> { void accept(A a, B b); } private static void takeBiConsumer(BiConsumer<String, String> bc) { } public static void main(String[] args) { takeBiConsumer((String s1, String s2) -> new String("hi")); // OK takeBiConsumer((String s1, String s2) -> "hi"); // Error } コンパイラーは以下を報告します: Error:(31, 58) java: incompatible …

3
Java8の例外型推論の固有の機能
このサイトで別の答えのコードを書いているときに、私はこの特異性に出くわしました。 static void testSneaky() { final Exception e = new Exception(); sneakyThrow(e); //no problems here nonSneakyThrow(e); //ERRROR: Unhandled exception: java.lang.Exception } @SuppressWarnings("unchecked") static <T extends Throwable> void sneakyThrow(Throwable t) throws T { throw (T) t; } static <T extends Throwable> void nonSneakyThrow(T t) throws T { throw t; } まず、sneakyThrowコンパイラーにとって呼び出しがOKである理由がかなり混乱しています。Tチェックされていない例外タイプのどこにも言及がない場合、どのようなタイプが推測されましたか? …

9
JDK8-Maven javadocプラグインを使用してjavadocを生成しようとすると、エラー「javax.interceptor.InterceptorBindingのクラスファイルが見つかりません」
私はJDK8を使用しています(Jenkinsによって起動されたLinux上のWin x64 u25 JDK +を使用してEclipseワークスペースで試してみました-jdk-8u20-linux-x64、両方で同じ問題)。 マルチモジュールのMavenプロジェクトがあります(パッケージタイプが「pom」のメインモジュールからMavenの目標「javadoc:aggregate」を起動しています)。 Pomビルドセクションは次のようになります。 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <additionalparam>-Xdoclint:none</additionalparam> </configuration> </plugin> </plugins> </build> 私はいつもエラーを受け取ります: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:aggregate (default-cli) on project uloan-global-build: An error has occurred in JavaDocs report generation: [ERROR] Exit code: 1 - …

6
Java 8Lambda式-ネストされたクラスの複数のメソッドはどうですか
新機能については、http://www.javaworld.com/article/2078836/java-se/love-and-hate-for-java-8.htmlで読んでいます。 私は以下の例を見ました: 匿名クラスの使用: button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.out.println("Action Detected"); } }); ラムダの場合: button.addActionListener(e -> { System.out.println("Action Detected"); }); MouseListener匿名クラス内に複数のメソッドを実装したい場合、誰かがaで何をしますか。例: public void mousePressed(MouseEvent e) { saySomething("Mouse pressed; # of clicks: " + e.getClickCount(), e); } public void mouseReleased(MouseEvent e) { saySomething("Mouse released; # of clicks: " + …

5
Stream.allMatch()が空のストリームに対してtrueを返すのはなぜですか?
同僚と私には、空のストリーム呼び出しallMatch()が返されるという想定に起因するバグがありましたfalse。 if (myItems.allMatch(i -> i.isValid()) { //do something } もちろん、ドキュメントを想定して読んでいないのは私たちのせいです。しかし、私が理解していないのはallMatch()、空のストリームのデフォルトの動作がなぜ戻るのかということですtrue。これの理由は何でしたか?同様にanyMatch()(逆に偽を返す)、この操作はモナドを出発不可欠な方法で使用され、おそらくで使用if声明。これらの事実を考慮すると、ほとんどの用途でallMatch()デフォルトでtrue空のストリームを使用することが望ましい理由はありますか?

4
Java8コンパレータ型推論によって非常に混乱している
特に静的メソッドの使用と、ラムダ式でparamタイプが必要かどうかに関して、Collections.sortとの違いを調べてきました。始める前に、たとえば問題を克服するためにメソッド参照を使用できることはわかっていますが、ここでのクエリは修正したいものではなく、答えが必要なものです。つまり、Javaコンパイラがこのように処理するのはなぜですか。 。list.sortComparatorSong::getTitle これらは私の発見です。我々が持っていると仮定しArrayListたタイプのをSong追加いくつかの曲で、3つの標準getメソッドがあります: ArrayList<Song> playlist1 = new ArrayList<Song>(); //add some new Song objects playlist.addSong( new Song("Only Girl (In The World)", 235, "Rhianna") ); playlist.addSong( new Song("Thinking of Me", 206, "Olly Murs") ); playlist.addSong( new Song("Raise Your Glass", 202,"P!nk") ); これは、機能する両方のタイプのソートメソッドの呼び出しです。問題ありません。 Collections.sort(playlist1, Comparator.comparing(p1 -> p1.getTitle())); playlist1.sort( Comparator.comparing(p1 -> p1.getTitle())); チェーンを開始するとすぐthenComparingに、次のことが起こります。 Collections.sort(playlist1, …

8
JDK 8のデフォルトは、Javaの多重継承の一形態ですか?
JDK 8の新機能により、バイナリ互換性を維持しながら既存のインターフェースに追加できます。 構文は次のようなものです public interface SomeInterface() { void existingInterface(); void newInterface() default SomeClass.defaultImplementation; } このようにしてSomeInterface、この新しいバージョンにアップグレードするときの既存のすべての実装で、突然コンパイルエラーが発生することはありませんnewInterface()。 これは素晴らしいことですが、実装しなかった新しいデフォルトのメソッドを両方とも追加した2つのインターフェイスを実装するとどうなりますか?例を挙げて説明しましょう。 public interface Attendance { boolean present() default DefaultAttendance.present; } public interface Timeline { boolean present() default DefaultTimeline.present; } public class TimeTravelingStudent implements Attendance, Timeline { } // which code gets called? new TimeTravelingStudent().present(); これはJDK8の一部として定義されていますか? …

11
JRE 8でJavaFXを使用すると、「アクセス制限」エラーが発生します
新しいjava8プロジェクトでjavafx関連のクラスを使用しようとすると、Eclipseからアクセス制限エラーが発生します。これまでのところ、私が見つけた唯一の「解決策」は、Eclipseにアクセス制限を無視するように指示することですが、私はそれに満足していません。エラーの例: Access restriction: The type Pane is not accessible due to restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar Java8用のEclipseJDTパッチでEclipseKeplerを使用しています。 これは、JavaFXがJavaSE実行環境の一部ではないという事実に関連する問題のようです。 http://en.wikipedia.org/wiki/JavaFXによると、javaFXはJavaSEの一部であるため、私は今、ひどく混乱しています。EclipseがjavaSEの一部であることを認識していない可能性はありますか?
83 java  eclipse  javafx  java-8 

9
Java 8:改行とインデントを使用したラムダのフォーマット
ラムダインデントで実現したいのは次のとおりです。 複数行のステートメント: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" }; List<String> strings = Arrays.stream(ppl) .filter( (x) -> { return x.contains("(M)"); } ).collect(Collectors.toList()); strings.stream().forEach(System.out::println); 1行のステートメント: List<String> strings = Arrays.stream(ppl) .map((x) -> x.toUpperCase()) .filter((x) -> x.contains("(M)")) .collect(Collectors.toList()); 現在、Eclipseは次のように自動フォーマットしています。 複数行のステートメント: String[] ppl …

10
org.apache.tomcat.util.bcel.classfile.ClassFormatException:定数プールの無効なバイトタグ:15
Tomcat7からJava8を使用してTomcat7を使用する別のサーバーにWebアプリを移植しています。 Tomcatは正常に起動しますが、ログcatalina.outに次のように表示されます。 org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15 at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:131) at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2049) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1931) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1899) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1885) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1281) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:346) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5172) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618) …

12
存在しない場合、オプションでロジックを実行する方法は?
java8を使用して次のコードを置き換えたいOptional: public Obj getObjectFromDB() { Obj obj = dao.find(); if (obj != null) { obj.setAvailable(true); } else { logger.fatal("Object not available"); } return obj; } 次の擬似コードはorElseRunメソッドがないため機能しませんが、とにかく私の目的を示しています。 public Optional<Obj> getObjectFromDB() { Optional<Obj> obj = dao.find(); return obj.ifPresent(obj.setAvailable(true)).orElseRun(logger.fatal("Object not available")); }
83 java  java-8  optional 

5
Java8ストリームをGuavaImmutableCollectionに収集するにはどうすればよいですか?
私は次のことをしたいと思います: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); しかし、結果のリストがGuavaの実装であるようにImmutableList。 私は私ができることを知っています List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); でも直接集めたいです。私はもう試した List<Integer> list = IntStream.range(0, 7) .collect(Collectors.toCollection(ImmutableList::of)); しかし、それは例外を投げました: com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:96)でのjava.lang.UnsupportedOperationException

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.