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

Javaは人気のある高水準プログラミング言語です。言語自体の使用または理解に問題がある場合は、このタグを使用してください。このタグが単独で使用されることはめったになく、[spring]、[spring-boot]、[jakarta-ee]、[android]、[javafx]、[gradle]、および[maven]と組み合わせて使用​​されることがほとんどです。

4
<の違いは何ですか?Baseを拡張し、TがBaseを拡張しますか?
この例では: import java.util.*; public class Example { static void doesntCompile(Map&lt;Integer, List&lt;? extends Number&gt;&gt; map) {} static &lt;T extends Number&gt; void compiles(Map&lt;Integer, List&lt;T&gt;&gt; map) {} static void function(List&lt;? extends Number&gt; outer) { doesntCompile(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); compiles(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); } } doesntCompile() でコンパイルできません: Example.java:9: error: incompatible types: HashMap&lt;Integer,List&lt;Integer&gt;&gt; cannot be converted to …

1
HashSetコードの予期しない実行時間
だから、もともと、私はこのコードを持っていました: import java.util.*; public class sandbox { public static void main(String[] args) { HashSet&lt;Integer&gt; hashSet = new HashSet&lt;&gt;(); for (int i = 0; i &lt; 100_000; i++) { hashSet.add(i); } long start = System.currentTimeMillis(); for (int i = 0; i &lt; 100_000; i++) { for (Integer val : hashSet) { …

5
ハッシュマップのハッシュマップを初期化するコードの繰り返しを回避するにはどうすればよいですか?
すべてのクライアントにはIDと多くの請求書があり、日付ごとに請求書のハッシュマップのIDごとのクライアントのハッシュマップとして保存されています。 HashMap&lt;LocalDateTime, Invoice&gt; allInvoices = allInvoicesAllClients.get(id); if(allInvoices!=null){ allInvoices.put(date, invoice); //&lt;---REPEATED CODE }else{ allInvoices = new HashMap&lt;&gt;(); allInvoices.put(date, invoice); //&lt;---REPEATED CODE allInvoicesAllClients.put(id, allInvoices); } Javaソリューションは使用するようgetOrDefaultです: HashMap&lt;LocalDateTime, Invoice&gt; allInvoices = allInvoicesAllClients.getOrDefault( id, new HashMap&lt;LocalDateTime, Invoice&gt; (){{ put(date, invoice); }} ); しかし、getがnullでない場合でも、put(date、invoice)を実行したいので、「allInvoicesAllClients」にデータを追加する必要があります。だからそれはあまり役に立たないようです。
27 java  java-8  hashmap 

1
静的メソッドのメタファクトリーなし
ログイン時にアプリがクラッシュし、エラーが発生するという問題がアプリにあります。 java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar) at okhttp3.internal.Util.&lt;clinit&gt;(Util.java:87) at okhttp3.internal.Util.skipLeadingAsciiWhitespace(Util.java:321) at okhttp3.HttpUrl$Builder.parse(HttpUrl.java:1313) at okhttp3.HttpUrl.get(HttpUrl.java:917) at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:492) at com.example.usub.Remote.RetrofitClient.getClient(RetrofitClient.java:14) at com.example.usub.Common.Common.getGoogleAPI(Common.java:10) at com.example.usub.Welcome.onCreate(Welcome.java:208) at android.app.Activity.performCreate(Activity.java:7825) at android.app.Activity.performCreate(Activity.java:7814) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at …
26 java  android 

5
アプリケーションが遅く、JVMがシングルCPUセットアップとJava 12以降で頻繁にハングする
クライアントアプリケーションがあります(10年以上の開発)。最近、そのJDKがOpenJDK 11からOpenJDK 14にアップグレードされました。シングルCPU(ハイパースレッディングが無効)のWindows 10セットアップ(および使用可能なCPUが1つだけのVirtualBoxマシン内)では、Java 11に比べてアプリケーションの起動が非常に遅くなります。さらに、ほとんどの場合100%のCPUを使用します。プロセッサアフィニティを1つのCPUのみに設定することで問題を再現することもできます(c:\windows\system32\cmd.exe /C start /affinity 1 ...)。 私のVirtualBoxマシンでアプリケーションを開始し、最小限の手動操作でクエリを実行することによる測定: OpenJDK 11.0.2:36秒 OpenJDK 13.0.2:〜1.5分 OpenJDK 13.0.2 with -XX:-UseBiasedLocking:46秒 OpenJDK 13.0.2 with -XX:-ThreadLocalHandshakes:40秒 OpenJDK 14:5〜6分 OpenJDK 14 with -XX:-UseBiasedLocking:3-3,5分 OpenJDK 15 EAビルド20:〜4,5分 使用されているJDK(および上記のオプション)のみが変更されています。(-XX:-ThreadLocalHandshakesJava 14では使用できません。) JDK 14で何ができるかをログに記録してみました-Xlog:all=debug:file=app.txt:uptime,tid,level,tags:filecount=50。 OpenJDK 11.0.2では、毎秒のログ行を数えるのは非常にスムーズに見えます。 $ cat jdk11-log/app* | grep "^\[" | cut -d. -f 1 | …
24 java  hang  java-14 

4
3項if-elseの自動開梱の必要性
このコードは正常に動作します:- Integer nullInt = null; if (1 &lt;= 3) { Integer secondNull = nullInt; } else { Integer secondNull = -1; } System.out.println("done"); しかし、これはnullポインター例外をスローしますが、Eclipseは自動アンボックス化の必要があることを警告します:- Integer nullInt = null; Integer secondNull = 1 &lt;= 3 ? nullInt : -1; System.out.println("done"); なぜそうなのですか、誰かが案内してくれますか?

1
カスタムコンパレーターを使用してTreeSetから削除しないと、より大きな項目のセットが削除されないのはなぜですか?
Java 8とJava 11の両方を使用TreeSetして、String::compareToIgnoreCaseコンパレーターで以下を検討してください。 final Set&lt;String&gt; languages = new TreeSet&lt;&gt;(String::compareToIgnoreCase); languages.add("java"); languages.add("c++"); languages.add("python"); System.out.println(languages); // [c++, java, python] に存在する正確な要素を削除しようとすると、TreeSet機能します。指定された要素はすべて削除されます。 languages.removeAll(Arrays.asList("PYTHON", "C++")); System.out.println(languages); // [java] ただし、に存在する以上のものを削除しようとするTreeSetと、呼び出しは何も削除しません(これは後続の呼び出しではなく、上のスニペットの代わりに呼び出されます)。 languages.removeAll(Arrays.asList("PYTHON", "C++", "LISP")); System.out.println(languages); // [c++, java, python] 何が悪いのですか?なぜこのように動作するのですか? 編集:String::compareToIgnoreCaseは有効なコンパレータです: (l, r) -&gt; l.compareToIgnoreCase(r)

3
java.security.egdオプションの目的は何ですか?
私が取り組んでいるプロジェクトでは、次のようなコマンドを使用してアプリケーションが起動されます。 java -Djava.security.egd=file:/dev/urandom -jar app.jar 私はこれまでjava.security.egdオプションを見たことがない。少し検索すると、Javaアプリケーションでの乱数生成の構成に使用されているようです。 正しいですか?いつ適用されることになっていますか?
22 java  jvm 

7
Java 8でブロッキングバックグラウンドローダーを作成する方法
質問 Java 8で適切なバックグラウンドローダーをどのように作成しますか?状況、契約条項: データはバックグラウンドでロードする必要があります ロード後、データが表示されます データがロードされている間、それ以上のリクエストは受け入れられません データのロード中にリクエストがあった場合、一定のタイムアウト(5秒など)後に別のロードをスケジュールする必要があります。 目的は、たとえばリロード要求を受け入れさせることですが、データベースが要求であふれることはありません。 MCVE これがMCVEです。これは、Thread.sleepを2秒間呼び出すだけでロードをシミュレートするバックグラウンドタスクで構成されています。タスクは毎秒スケジュールされるため、当然、バックグラウンドロードタスクの重複につながりますが、これは避けてください。 public class LoadInBackgroundExample { /** * A simple background task which should perform the data loading operation. In this minimal example it simply invokes Thread.sleep */ public static class BackgroundTask implements Runnable { private int id; public BackgroundTask(int id) { …

1
Springのスコーププロキシとは何ですか?
私たちが知っているように春には、(機能を追加するためにプロキシを使用する@Transactionalと、@Scheduledたとえば)。2つのオプションがあります-JDK動的プロキシを使用する(クラスは空でないインターフェースを実装する必要があります)、またはCGLIBコードジェネレーターを使用して子クラスを生成します。proxyModeを使用すると、JDK動的プロキシとCGLIBのどちらかを選択できるといつも思っていました。 しかし、私の想定が間違っていることを示す例を作成することができました。 ケース1: シングルトン: @Service public class MyBeanA { @Autowired private MyBeanB myBeanB; public void foo() { System.out.println(myBeanB.getCounter()); } public MyBeanB getMyBeanB() { return myBeanB; } } プロトタイプ: @Service @Scope(value = "prototype") public class MyBeanB { private static final AtomicLong COUNTER = new AtomicLong(0); private Long index; public MyBeanB() { …

2
Android AsyncTask APIはAndroid 11で廃止予定です。代替案は何ですか?
編集:この質問は重複ではありません 廃止のほんの数日前のAOSPコミットが行われました。 もう1つの質問は、AsyncTaskではなくAsyncTaskLoaderを使用することです。 GoogleはAndroid 11でのAndroid AsyncTask APIのサポートを終了し、java.util.concurrent代わりに使用することを提案しています。ここでコミットを確認できます * * @deprecated Use the standard &lt;code&gt;java.util.concurrent&lt;/code&gt; or * &lt;a href="https://developer.android.com/topic/libraries/architecture/coroutines"&gt; * Kotlin concurrency utilities&lt;/a&gt; instead. */ @Deprecated public abstract class AsyncTask&lt;Params, Progress, Result&gt; { Androidで非同期タスクを含む古いコードベースを維持している場合は、将来的に変更する必要があるでしょう。私の質問は、以下に示すコードスニペットをを使用して適切に置き換えることjava.util.concurrentです。これは、アクティビティの静的内部クラスです。私はうまくいくものを探していますminSdkVersion 16 private static class LongRunningTask extends AsyncTask&lt;String, Void, MyPojo&gt; { private static final String TAG = MyActivity.LongRunningTask.class.getSimpleName(); …
21 java  android 

2
レコードのデフォルトコンストラクターを定義する
レコードがあり、それにデフォルトのコンストラクターを追加したい。 public record Record(int recordId) { public Record { } } しかし、それはintparamでコンストラクタを作成しました。 public final class Record extends java.lang.Record { private final int recordId; public Record(int); //other method } レコードに既定のコンストラクターを追加するにはどうすればよいですか?

1
これはJavaで文字を文字列に変換する正しい方法ですか?[重複]
この質問にはすでに回答があります: 文字を文字列に変換する方法は? (11回答) 17時間閉店。 boolean2つStringのsを返す関数の単体テストを作成しているときに、アルファベット('a'- 'z')のすべての文字をパラメーターの1つとして1つずつ順番にテストする必要があったので、これを行うためにこれを作成しました。 for(char c = 'a'; c &lt;= 'z'; c++) { assertTrue(MyClass.MyFunction(testSubject, new String(c)); } これは許容できると思ったはずですが、そうではなかったので、代わりに次のようにしました。 for(char c = 'a'; c &lt;= 'z'; c++) { assertTrue(MyClass.MyFunction(testSubject, ((Character) c).toString()); } これはJavaでa charをa Stringに変換する信頼できる方法ですか?それが望ましい方法ですか?Javaについてはあまり詳しくないので、これについて説明をお願いします。
20 java  string  character 

1
Paths.getとPath.of
私の知る限り伝える、できるとPaths.getとPath.ofまったく同じことを行うように見える、に一個の以上の文字列を回しPathオブジェクト。ドキュメントhttps://docs.oracle.com/javase/8/docs/api/java/nio/file/Paths.html#get-java.lang.String-java.lang.String...-およびhttps: //docs.oracle.com/en/java/javase/13/docs/api/java.base/java/nio/file/Path.html#of(java.lang.String,java.lang.String ... )同じ表現を使用します。それらは実際には同じですか? Path.of後で紹介されました。予想:それは一貫したFoo.ofスタイルのために導入されました。その場合、それは一貫性/美的理由から好ましいと考えられますか?
20 java  java-11 

3
デフォルトのフィールド初期化に依存-プログラミングスタイルが悪いですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 7か月前に閉鎖。 オラクルの公式ドキュメントへのリンクが与えられました:https : //docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html それが言われるところ: デフォルト値 フィールドが宣言されている場合、必ずしも値を割り当てる必要はありません。宣言されているが初期化されていないフィールドは、コンパイラによって適切なデフォルトに設定されます。一般的に言って、このデフォルトは、データ型に応じてゼロまたはnullになります。ただし、このようなデフォルト値に依存することは、一般に悪いプログラミングスタイルと見なされます。 この部分を強調したい: ただし、このようなデフォルト値に依存することは、一般に悪いプログラミングスタイルと見なされます。 しかし、まあ、これは、インスタンス変数にデフォルト値があることを知っている言語仕様の基本的な部分です。Java SEライブラリのソースコードでも広く使用されているのに、なぜこれがプログラミングの悪い習慣なのでしょうか。

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