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

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

4
Mockitoは引数に関係なくメソッドをスタブできますか?
Mockitoを使用して、いくつかのレガシーコードをテストしようとしています。 FooDao次のようにプロダクションで使用されるaをスタブ化したい: foo = fooDao.getBar(new Bazoo()); 私は書くことができます: when(fooDao.getBar(new Bazoo())).thenReturn(myFoo); しかし、明らかな問題は、メソッドをスタブしたオブジェクトとgetBar()同じBazooオブジェクトで呼び出されないことです。(そのnewオペレーターを呪いなさい!) myFoo引数に関係なくメソッドが返されるようにメソッドをスタブできたら、私はそれを気に入っています。それができない場合は、他の回避策の提案に耳を傾けますが、妥当なテストカバレッジが得られるまで、実稼働コードを変更しないようにしたいと思います。

30
プライベートメソッドを公開して単体テストを行うと…いい考えですか?
司会者注: ここにはすでに39の回答が投稿されています(一部は削除されています)。回答 を投稿する前に、ディスカッションに意味のあるものを追加できるかどうかを検討してください。あなたはたぶん他の誰かがすでに言ったことを繰り返すだけです。 ユニットテストを記述するためだけに、クラスのプライベートメソッドをパブリックにする必要がある場合があります。 通常これは、メソッドにクラス内の他のメソッド間で共有されるロジックが含まれていて、独自にロジックをテストするほうが簡単なためです。または、スレッドの問題を心配せずに同期スレッドで使用されるロジックをテストしたいという別の理由も考えられます。 。 私は本当にそれが好きではないので、他の人が自分でこれをやっているのを見つけますか?個人的には、ボーナスは、クラスの外では実際にサービスを提供しないメソッドを公開することの問題を上回ると思います... 更新 皆様のご回答ありがとうございます、人々の興味をそそられたようです。これはクラスが使用される唯一の方法であり、私はこれに同意するため、一般的なコンセンサスはパブリックAPIを介してテストを行うべきであると考えています。私が上記でこれを実行する2つのケースはまれなケースであり、それを実行することのメリットはそれだけの価値があると思いました。 しかし、誰もがそれが実際に起こるべきではないという指摘を見ることができます。そして、それについてもう少し考えると、テストに対応するためにコードを変更することは悪い考えだと思います。結局、テストはある意味でサポートツールであり、システムを「サポートツールをサポートする」ように変更するのは露骨です。悪い習慣。
301 c#  java  unit-testing 



9
「SomeType @ 2f92e0f4」を取得せずにJavaオブジェクトを印刷するにはどうすればよいですか?
次のように定義されたクラスがあります。 public class Person { private String name; // constructor and getter/setter omitted } 私は自分のクラスのインスタンスを印刷しようとしました: System.out.println(myPerson); しかし、私は次の出力を得ました:com.foo.Person@2f92e0f4。 Personオブジェクトの配列を印刷しようとしたときにも、同様のことが起こりました。 Person[] people = //... System.out.println(people); 私は出力を得ました: [Lcom.foo.Person;@28a418fc この出力はどういう意味ですか?この出力を変更して自分の名前を含めるにはどうすればよいですか?オブジェクトのコレクションを印刷するにはどうすればよいですか? 注:これは、この主題に関する正規のQ&Aとして意図されています。
301 java  string  object  tostring 


9
Dependency Injectionコンストラクターの狂気を避ける方法は?
私のコンストラクターは次のようになり始めています: public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... ) パラメータリストは増え続けています。「コンテナ」は依存関係注入コンテナなので、なぜこれを実行できないのですか。 public MyClass(Container con) すべてのクラスで?欠点は何ですか?これを行うと、私は栄光のスタティックを使用しているように感じます。IoCと依存性注入の狂気についてのあなたの考えを共有してください。

9
Gson:文字列をJsonObjectに直接変換(POJOなし)
これを理解できないようです。GSONでJSONツリー操作を試みていますが、に変換する前に、文字列を変換するPOJOがわからない、または持っていない場合がありJsonObjectます。直接移動する方法があるStringにはJsonObject? 私は以下を試しました(Scala構文): val gson = (new GsonBuilder).create val a: JsonObject = gson.toJsonTree("""{ "a": "A", "b": true }""").getAsJsonObject val b: JsonObject = gson.fromJson("""{ "a": "A", "b": true }""", classOf[JsonObject]) しかしa失敗すると、JSONはエスケープされ、JsonString唯一として解析されb、空のを 返しますJsonObject。 何か案は?
300 java  json  gson 



21
Javaの関数ポインターの最も近い代替物は何ですか?
約10行のコードを使用するメソッドがあります。コードの1行を変更する小さな計算を除いて、まったく同じことを行うメソッドをさらに作成したいと思います。これは関数ポインターを渡してその1行を置き換えるのに最適なアプリケーションですが、Javaには関数ポインターがありません。私の最善の選択肢は何ですか?


12
META-INFの目的は何ですか?
Javaでは、いくつかのメタファイルを含むMETA-INFフォルダーがよくあります。このフォルダの目的は何ですか、そこに何を置くことができますか?
298 java  meta-inf 

12
IntelliJ IDEAがserialVersionUIDを生成
IntelliJ IDEAでこの値を生成するにはどうすればよいですか? 私は行く設定 - > [ エラー - > シリアライズの問題 - 「serialVersionUIDの」なし>直列化可能クラスが、それはまだ私に警告を表示しません。私のクラスPKladrBuilding親はSerializableインターフェースを実装しています。 コードの一部: public class PKladrBuilding extends PRQObject public abstract class PRQObject extends PObject public abstract class PObject implements Serializable

7
アトミック/揮発性/同期の違いは何ですか?
アトミック/揮発性/同期化は内部的にどのように機能しますか 次のコードブロックの違いは何ですか? コード1 private int counter; public int getNextUniqueIndex() { return counter++; } コード2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } コード3 private volatile int counter; public int getNextUniqueIndex() { return counter++; } volatile次のように機能しますか?です volatile int i = 0; void incIBy5() { i += 5; } に相当 …

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