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

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

21
compareTo()とequals()の比較
StringJavaのの等価性をテストするときは、equals()これが最も自然な方法のように思えるため、常に使用しました。結局のところ、その名前はすでに意図されていることを示しています。しかし、私の同僚は最近、のcompareTo() == 0代わりに使用するように教えられたと私に言ったequals()。これは不自然に感じられ(compareTo()順序付けを提供し、同等性を比較しないことを意味します)、多少危険compareTo() == 0でもあります(すべての場合において同等であることを意味するわけではないため、必ずしもそうであるとは限りませんString)。 彼はfor のcompareTo()代わりに使用するように教えられた理由を知りませんでした。また、理由もわかりませんでした。これは本当に個人的な好みの問題ですか、それともどちらの方法にも本当の理由がありますか?equals()String
118 java  string  equals  compareto 


5
Java 8は値または関数を繰り返すための良い方法を提供しますか?
他の多くの言語、例えば。Haskell、値や関数を複数回繰り返すのは簡単です。値1の8つのコピーのリストを取得するには、次のようにします。 take 8 (repeat 1) しかし、Java 8ではまだこれが見つかりません。Java8のJDKにそのような関数はありますか? または、代わりに次のような範囲に相当するもの [1..8] それはJavaのような冗長なステートメントの明らかな置き換えと思われるでしょう for (int i = 1; i <= 8; i++) { System.out.println(i); } のようなものを持っている Range.from(1, 8).forEach(i -> System.out.println(i)) この特定の例は実際にははるかに簡潔に見えませんが...うまくいけば、より読みやすくなります。
118 java  java-8 

5
Java-JPA-@Versionアノテーション
@VersionJPAでアノテーションはどのように機能しますか? 私は次のように抽出されたさまざまな答えを見つけました: JPAはエンティティのバージョンフィールドを使用して、同じデータストアレコードに対する同時変更を検出します。JPAランタイムは、同じレコードを同時に変更する試みを検出すると、最後にコミットしようとしたトランザクションに例外をスローします。 しかし、それがどのように機能するかはまだわかりません。 次の行からも: バージョンフィールドは不変と見なす必要があります。フィールド値を変更すると、未定義の結果が生じます。 バージョンフィールドを次のように宣言する必要があるという意味finalですか?

6
JavaのcharAt()と同等のC#?
charAt()Javaでこのメソッドを使用して、位置を指定することで文字列内の個々の文字を取得できることを知っています。C#に同等のメソッドはありますか?
118 c#  java  string 

5
ヒープサイズよりもはるかに多くのメモリを使用しているJava(または正しいサイズのDockerメモリ制限)
私のアプリケーションでは、Javaプロセスで使用されるメモリはヒープサイズよりもはるかに多くなっています。 コンテナーがヒープサイズよりも多くのメモリを使用しているため、コンテナーが実行されているシステムでメモリの問題が発生し始めます。 ヒープサイズは128 MB(-Xmx128m -Xms128m)に設定され、コンテナは最大1 GBのメモリを使用します。通常の状態では、500MB必要です。Dockerコンテナの制限が(たとえばmem_limit=mem_limit=400MB)未満の場合、プロセスはOSのメモリ不足キラーによって強制終了されます。 Javaプロセスがヒープよりもはるかに多くのメモリを使用する理由を説明できますか?Dockerのメモリ制限のサイズを正しく設定するにはどうすればよいですか?Javaプロセスのオフヒープメモリフットプリントを削減する方法はありますか? JVMのネイティブメモリトラッキングからコマンドを使用して、問題に関する詳細を収集します。 ホストシステムから、コンテナーが使用するメモリを取得します。 $ docker stats --no-stream 9afcb62a26c8 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 9afcb62a26c8 xx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.0acbb46bb6fe3ae1b1c99aff3a6073bb7b7ecf85 0.93% 461MiB / 9.744GiB 4.62% 286MB / 7.92MB 157MB / 2.66GB 57 コンテナーの内部から、プロセスが使用するメモリーを取得します。 $ ps -p 71 -o …
118 java  linux  docker  memory  jvm 

16
System.gc()はいつ何かをしますか?
Javaではガベージコレクションが自動化されています。しかしSystem.gc()、コードを呼び出すと、その時点でJVMがガベージコレクションを実行するかどうかを判断できることを理解しました。これはどのように正確に機能しますか?JVMは、GCを検出したときに、GCを実行する(または実行しない)と正確にどの基準/パラメーターで判断しますSystem.gc()か? あなたのコードにこれを入れるのが良い場合の例はありますか?

3
JUnitクラスの特別なテストパッケージへの分離?
私は読書を通じてテスト駆動開発の概念を学んでいます職人の記事を(クリック職人の下にしてトピックを)私の前の質問への答えで推奨「のJUnitと適切なソフトウェア工学を学ぶためのサンプルプロジェクト」。今のところ大好きです! でも今は座って自分で試してみたいです。簡単な答えだけでいいと思います。 JUnitテストクラスと実際のコードをどのように整理しますか?私は主にパッケージ構造について話していますが、他のメモの概念も役に立ちます。 テストクラスをorg.myname.project.test。*に配置し、通常のコードをorg.myname.project。*に配置しますか?テストクラスを通常のクラスと並べて配置していますか?クラス名に接尾辞を付けるのではなく、接頭辞にTestを付けますか? これは、すぐに心配する必要のないことのように思えますが、私は非常に組織中心の人です。私はほとんどですむしろ実際に物事を得るよりも、成し遂げるに何を追跡するための方法を考え出すより多くの時間を費やしている人のようなもの。 そして、私は現在きれいにパッケージに分割されているプロジェクトを持っていますが、プロジェクトは混乱しました。すべてをリファクタリングしてテストを作成しようとするのではなく、テストを最初からやり直したいと思います。しかし、最初に、テストの場所を知る必要があります。 編集:私は完全にMavenを忘れましたが、あなたの大多数がそれを使用しているようです!以前は、Mavenが完全に故障した特定のユースケースがありましたが、Antが必要な柔軟性を提供してくれたため、結局Antに執着しましたが、おそらく間違ったアプローチをとっていたのではないかと思っています。テスト駆動開発でうまくいくように思えるので、Mavenをもう一度試してみると思います。
118 java  unit-testing  junit 

18
Spring SecurityでJavaコードの「hasRole」をチェックする方法は?
Javaコードでユーザー権限または許可を確認する方法 例-役割に応じてユーザーのボタンを表示または非表示にしたい。次のような注釈があります。 @PreAuthorize("hasRole('ROLE_USER')") Javaコードで作成する方法は?何かのようなもの : if(somethingHere.hasRole("ROLE_MANAGER")) { layout.addComponent(new Button("Edit users")); }


19
NullチェックチェーンとNullPointerExceptionのキャッチ
Webサービスが巨大なXMLを返すので、それの深くネストされたフィールドにアクセスする必要があります。例えば: return wsObject.getFoo().getBar().getBaz().getInt() 問題はそれです getFoo()、getBar()、getBaz()すべて返すことがありnull。 しかし、私がチェックした場合 nullすべてのケースでと、コードが非常に冗長になり、読みにくくなります。また、一部のフィールドのチェックが抜ける場合があります。 if (wsObject.getFoo() == null) return -1; if (wsObject.getFoo().getBar() == null) return -1; // maybe also do something with wsObject.getFoo().getBar() if (wsObject.getFoo().getBar().getBaz() == null) return -1; return wsObject.getFoo().getBar().getBaz().getInt(); 書いてもいいですか try { return wsObject.getFoo().getBar().getBaz().getInt(); } catch (NullPointerException ignored) { return -1; } それともアンチパターンと見なされますか?


6
「java -cp」と「java -jar」の違いは何ですか?
でJavaアプリケーションを実行しているとの違いは何であるjava -cp CLASSPATHとはjava -jar JAR_FILE_PATH?Javaアプリケーションを実行するために、どちらか一方が他方よりも優先されますか?これらの方法のうち、JVMの方が(マシンリソースの使用状況に応じて)コストが高いのはどれですか。 アプリケーションを実行しようとしたときに、JVMがより多くのスレッドを生成するのはどれですか。
118 java  jar  jvm  classpath 

9
Spring MVCのコントローラーアクションから外部URLにリダイレクトする
次のコードがユーザーをプロジェクト内のURLにリダイレクトしていることに気づきました。 @RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "yahoo.com"; return "redirect:" + redirectUrl; } 一方、以下は意図したとおりに正しくリダイレ​​クトされますが、http://またはhttps://が必要です @RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; } 有効なプロトコルが含まれているかどうかに関係なく、指定されたURLに常にリダイレクトして、ビューにリダイレクトしないようにしたい。どうやってやるの? おかげで、
118 java  spring  jsp  spring-mvc 

6
ワンライナーでストリーム/リストの最後の要素を取得する
次のコードでストリームまたはリストの最後の要素を取得するにはどうすればよいですか? どこdata.careasでList<CArea>: CArea first = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).findFirst().get(); CArea last = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .collect(Collectors.toList()).; //how to? ご覧のとおり、最初の要素を特定filterので取得することは難しくありません。 ただし、ワンライナーの最後の要素を取得するのは本当に大変です。 から直接入手できないようStreamです。(それは有限のストリームに対してのみ意味があります) また、インターフェイスのようなものを取得できないようfirst()で、これは本当に苦痛です。last()List インターフェース内にfirst()とlast()メソッドを提供しないことについてはList、そこにある要素が順序付けられており、サイズがわかっているため、私は何の議論も見ていません。 しかし、元の答えのとおり:有限の最後の要素を取得する方法はStream? 個人的に、これは私が得ることができる最も近いものです: int lastIndex = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .mapToInt(c -> data.careas.indexOf(c)).max().getAsInt(); CArea last = data.careas.get(lastIndex); ただしindexOf、すべての要素でon を使用する必要があります。これは、パフォーマンスを損なう可能性があるため、通常は必要ない可能性があります。
118 java  list  java-8  java-stream 

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