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

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

5
Mockitoは任意のクラス引数と一致します
以下のサンプルルーチンのクラス引数を照合する方法はありますか? class A { public B method(Class<? extends A> a) {} } どのクラスが渡されたかに関係なく、どのようにして常に返すことができますか?次の試みは、が一致する特定のケースでのみ機能します。new B()methodA A a = new A(); B b = new B(); when(a.method(eq(A.class))).thenReturn(b); 編集:1つの解決策は (Class<?>) any(Class.class)

26
Java 8ストリームの逆順
一般的な質問:ストリームをリバースする適切な方法は何ですか?ストリームを構成する要素のタイプがわからない場合、ストリームを逆にする一般的な方法は何ですか? 具体的な質問: IntStream特定の範囲IntStream.range(-range, 0)で整数を生成するための範囲メソッドを提供します。これで、範囲を0から負に反転させたいので、機能しません。また、使用できません。Integer::compare List<Integer> list = Arrays.asList(1,2,3,4); list.stream().sorted(Integer::compare).forEach(System.out::println); IntStream私は、このコンパイラエラーを取得します エラー:(191、0)ajc:sorted()タイプのメソッドIntStreamは引数(Integer::compare)に適用できません ここで何が欠けていますか?

6
リストに追加するにはどうすればよいですか?Number>データ構造を拡張しますか?
私はこのように宣言されたリストを持っています: List<? extends Number> foo3 = new ArrayList<Integer>(); 私はfoo3に3を追加しようとしました。ただし、次のようなエラーメッセージが表示されます。 The method add(capture#1-of ? extends Number) in the type List<capture#1-of ? extends Number> is not applicable for the arguments (ExtendsNumber)
153 java  generics 

3
いつSerializableインターフェースを実装する必要がありますか?
public class Contact implements Serializable { private String name; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } いつSerializableインターフェイスを実装する必要がありますか? なぜそれを行うのですか? 利点やセキュリティはありますか?



12
入力ストリームからのAndroidの読み取りを効率的に
私が作成しているAndroidアプリケーションのWebサイトへのHTTP getリクエストを作成しています。 DefaultHttpClientを使用し、HttpGetを使用してリクエストを発行しています。エンティティの応答を取得し、これからページのhtmlを取得するためのInputStreamオブジェクトを取得します。 次に、次のようにして返信を循環します。 BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); String x = ""; x = r.readLine(); String total = ""; while(x!= null){ total += x; x = r.readLine(); } しかし、これはものすごく遅いです。 これは非効率ですか?大きなWebページ(www.cokezone.co.uk)をロードしていないので、ファイルサイズは大きくありません。これを行うより良い方法はありますか? ありがとう アンディ


6
log4j対logback [終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する 自作のラッパーの背後でlog4jを使用しています。今後はさらに多くの機能を使用する予定です。 ログバックに更新する必要がありますか? (つまり、フレームワークはSLF4Jのようなファサードではありません)
152 java  logging  log4j  logback 

11
スタックトレースをlog4jに送信する方法は?
e.printStackTrace()を実行すると、例外をキャッチして、標準出力(たとえば、コンソールなど)で次のようになります。 java.io.FileNotFoundException: so.txt at java.io.FileInputStream.<init>(FileInputStream.java) at ExTest.readMyFile(ExTest.java:19) at ExTest.main(ExTest.java:7) これを、たとえばlog4jのようなロガーに送信して、以下を取得します。 31947 [AWT-EventQueue-0] ERROR Java.io.FileNotFoundException: so.txt 32204 [AWT-EventQueue-0] ERROR at java.io.FileInputStream.<init>(FileInputStream.java) 32235 [AWT-EventQueue-0] ERROR at ExTest.readMyFile(ExTest.java:19) 32370 [AWT-EventQueue-0] ERROR at ExTest.main(ExTest.java:7) これどうやってするの? try { ... } catch (Exception e) { final String s; ... // <-- What goes here? log.error( s …

5
JUnitの混乱:「extends TestCase」または「@Test」を使用しますか?
JUnitの適切な使用(または少なくともドキュメント)は非常に混乱していることがわかりました。この質問は、将来の参照と実際の質問の両方として機能します。 私が正しく理解していれば、JUnitテストを作成して実行するには、主に2つの方法があります。 アプローチA(JUnit 3スタイル): TestCaseを拡張するクラスを作成し、単語でテストメソッドを開始しtestます。(Eclipseで)JUnitテストとしてクラスを実行すると、単語で始まるすべてのメソッドtestが自動的に実行されます。 import junit.framework.TestCase; public class DummyTestA extends TestCase { public void testSum() { int a = 5; int b = 10; int result = a + b; assertEquals(15, result); } } アプローチB(JUnit 4スタイル):「通常の」クラスを@Test作成し、メソッドに注釈を付加します。メソッドを単語で始める必要はないことに注意してくださいtest。 import org.junit.*; import static org.junit.Assert.*; public class DummyTestB { @Test public void Sum() …

5
int i = 1024 * 1024 * 1024 * 1024がエラーなしでコンパイルされるのはなぜですか?
の制限intは-2147483648〜2147483647です。 入力すると int i = 2147483648; 次に、Eclipseは「2147483648」の下に赤い下線を表示します。 しかし、これを行うと: int i = 1024 * 1024 * 1024 * 1024; 正常にコンパイルされます。 public class Test { public static void main(String[] args) { int i = 2147483648; // error int j = 1024 * 1024 * 1024 * 1024; // no error } } …
152 java  int 

9
Mockitoで可変引数を適切に一致させる方法
私はMockitoを使用して、可変引数パラメーターを持つメソッドをモックしようとしています: interface A { B b(int x, int y, C... c); } A a = mock(A.class); B b = mock(B.class); when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b); assertEquals(b, a.b(1, 2)); これは機能しませんが、代わりにこれを行うと: when(a.b(anyInt(), anyInt())).thenReturn(b); assertEquals(b, a.b(1, 2)); これは機能しますが、メソッドをスタブするときにvarargs引数を完全に省略しています。 手がかりはありますか?

3
0.1を複数回追加しても損失がないのはなぜですか?
私が知っている0.1小数点数が有限進数(と正確に表現できない説明)ので、double n = 0.1いくつかの精度を失うことになると、正確ではありません0.1。一方、0.5なので正確に表現できます0.5 = 1/2 = 0.1b。 0.1 3回追加しても正確には得られない0.3ので、次のコードが出力されることは理解できると述べましたfalse。 double sum = 0, d = 0.1; for (int i = 0; i < 3; i++) sum += d; System.out.println(sum == 0.3); // Prints false, OK しかし、それでは、0.1 5回追加すると正確にどのようになるのでしょう0.5か。次のコードは出力しますtrue: double sum = 0, d = 0.1; for (int i = 0; …

7
Java:整数の等しいと==
Java 1.5以降、多くの状況でIntegerとほとんど交換できますint。 ただし、コードに潜在的な欠陥があり、少し驚いた。 次のコード: Integer cdiCt = ...; Integer cdsCt = ...; ... if (cdiCt != null && cdsCt != null && cdiCt != cdsCt) mismatch = true; 値が等しい場合、不一致を誤って設定しているように見えましたが、どのような状況下であるかはわかりません。私はEclipseにブレークポイントを設定し、Integer値が両方とも137であることを確認しました。ブール式を検査したところ、falseであることがわかりましたが、ステップオーバーすると、ミスマッチをtrueに設定していました。 条件を次のように変更します。 if (cdiCt != null && cdsCt != null && !cdiCt.equals(cdsCt)) 問題を修正しました。 なぜこれが起こったのかについて誰かが光を当てることができますか?これまでのところ、自分のPCのローカルホストでの動作のみを確認しました。この特定のケースでは、コードは約20回の比較に成功しましたが、2回失敗しました。問題は一貫して再現可能でした。 それが一般的な問題である場合は、他の環境(開発とテスト)でエラーを引き起こしているはずですが、これまでのところ、このコードスニペットを実行する何百ものテストの後に問題を報告した人はいません。 ==2つのInteger値を比較するために使用することはまだ正当ではありませんか? 以下のすべての良い答えに加えて、次のスタックオーバーフローリンクにはかなりの追加情報があります。実際には元の質問に答えていたはずですが、質問でオートボクシングについて言及しなかったため、選択した提案には表示されませんでした。 コンパイラ/ JVMがオートボクシングを「機能するだけ」にできないのはなぜですか?

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