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

Javaは、元はSun Microsystemsによって開発された、プラットフォームに依存しない高レベルのオブジェクト指向プログラミング言語です。Javaは現在、2010年にSunを購入したOracleが所有しています。

1
エンティティの代わりにDTOを使用するとどうなりますか?
私はRCPアプリケーションに取り組んでいます。このアプリケーションは初めてです。 Spring Beanは、エンティティを保存/取得するビジネスロジックを記述するために使用されます。 ただし、エンティティを直接クライアントに送信する代わりに、DTOに変換してクライアントにデータを入力しています。保存中に、再びDTOをエンティティに変換して保存します。 これらの変換の利点は何ですか?誰か説明できますか?
18 java  spring  entity  map  dto 

6
メソッドの署名のすべてのパラメーターにjavadocコメントを書く必要がありますか?
私のチームの開発者の1人は、メソッドの署名のEVERYパラメーターにjavadocコメントを書く必要があると考えています。私はこれが必要だとは思わないし、実際、それは有害でさえあると思う。 まず、パラメーター名は説明的で自己文書化されるべきだと思います。パラメータの目的がすぐに分からない場合は、おそらく間違っています。ただし、パラメータの目的が不明な場合があることは理解しています。そのため、その場合は、パラメータを説明するjavadocコメントを作成する必要があります。 しかし、すべてのパラメーターに対してこれを行う必要はないと思います。パラメータの目的がすでに明らかな場合、javadocコメントは冗長です。あなた自身のために余分な仕事を作成しているだけです。さらに、コードを保守する必要がある人のために余分な作業を作成しています。メソッドは時間とともに変化し、コメントを維持することはコードを維持することとほぼ同じくらい重要です。「XはYをZの理由で行う」などのコメントを何回見て、そのコメントが古いことを確認しましたが、実際にはメソッドはXパラメーターさえも取りません。人々はコメントを更新するのを忘れているので、それは常に起こります。誤解を招くコメントは、まったくコメントしないよりも有害であると主張します。したがって、過剰なコメントの危険性があります。不要なドキュメントを作成することにより、 しかし、私は自分のチームの他の開発者を尊重し、おそらく彼が正しいと私は間違っていることを受け入れます。だからこそ、仲間の開発者に質問を投げかけます。実際、すべてのパラメーターにjavadocコメントを書く必要がありますか?ここでは、コードは会社の内部にあり、外部の第三者によって消費されることはないと想定しています。

7
インスタンス作成がそのままなのはなぜですか?
私は過去6か月ほどの間にC#を学び、現在はJavaを掘り下げています。私の質問は、インスタンスの作成に関するものです(どちらの言語でも)、それはもっと多くのことです。この例を取ります Person Bob = new Person(); オブジェクトが2回指定されている理由はありますか?ありsomething_else Bob = new Person()ますか? 私が慣習に従っているなら、もっと似ているように思えます: int XIsAnInt; Person BobIsAPerson; または、おそらく次のいずれかです。 Person() Bob; new Person Bob; new Person() Bob; Bob = new Person(); 「それがまさに行われている方法」よりも良い答えがあるかどうか興味があります。

4
異なるプロジェクト間でクラスまたはインターフェースを共有する
私はSOまたはここでいくつかの答えを探していましたが、結果なしで、あなたに尋ねる理由です。 アプリのサーバー部分とクライアント部分など、2つの異なるプロジェクトがあると仮定しましょう。私は自分のパートを開発していますが、友人は2番目のパートを作成しています。しかし、私たちの両方のようないくつかの共通のインターフェイスを使用する必要があるUserか、AccountInfoまたはChangableAccount順番に互換性を確保するために何でも...。たとえば、クライアントがユーザーデータをサーバーに送信する場合、サーバーは同じクラスで動作する必要があります。インターフェイスなどでも同じです。さらに、共通のインターフェイスに変更がある場合は、両方のプロジェクトでコードを新しい状況に合わせて調整する必要があります。 私が今見ることができる唯一の解決策は、すべての一般的なものが定義されている1つの余分なプロジェクトを作成することです。私たちと私の友人は、このプロジェクトをメインプロジェクト(クライアントまたはサーバー)への依存関係として追加する必要があります。共有プロジェクトは何らかのバージョン管理システムで管理できるため、常に最新の状態になります。 他にどのような解決策を提案しますか?このような問題はプロのアプリでどのように解決されますか?

4
実装(HashMap)ではなくインターフェイス(Mapなど)を使用してJavaオブジェクトを定義する理由
ほとんどのJavaコードでは、次のようにJavaオブジェクトを宣言する人がいます。 Map<String, String> hashMap = new HashMap<>(); List<String> list = new ArrayList<>(); の代わりに: HashMap<String, String> hashMap = new HashMap<>(); ArrayList<String> list = new ArrayList<>(); 実際に使用される実装ではなく、インターフェースを使用してJavaオブジェクトを定義する設定があるのはなぜですか?


4
Java Stringに静的な文字列操作メソッドがないのはなぜですか?
Javaデザイナーがjava.lang.Stringクラスで文字列操作メソッドの静的バージョンを作成しなかったのはなぜですか?以下のメソッドは私が参照するものですが、質問はクラス内の他の非静的メソッドにも拡張できます。 concat(String) substring(int, int) replace(char, char) toLowerCase() replace(CharSequence, CharSequence) toLowerCase(Locale) replaceAll(String, String) toString() replaceFirst(String, String) toUpperCase() split(String) toUpperCase(Locale) split(String, int) trim() substring(int) これらのメソッドの非静的バージョンのみを使用すると、そのようなメソッドを呼び出さなければならない場所で明示的な nullチェックが強制されます。たとえば、単に呼び出すexample = example.trim()と、NullPointerException ifになりString example = nullます。そのため、プログラマは次の定型的なヌルチェックを行う必要があります。 if (example != null) example = example.trim(); // OR: example = (example==null) ? null : example.trim(); example = (example==null) ? …
17 java  api-design  null 

3
Javaで文字列を連結すると、メモリにいくつの文字列が作成されますか?
Javaの不変文字列について尋ねられました。文字列に多数の "a"を連結する関数を書くことを任されました。 私が書いたもの: public String foo(int n) { String s = ""; for (int i = 0; i < n; i++) { s = s + "a" } return s; } その後、ガベージコレクションが発生しないと仮定して、このプログラムが生成する文字列の数を尋ねられました。n = 3に対する私の考えは 「」 「a」 「a」 「aa」 「a」 「aaa」 「a」 基本的に、ループの各反復で2つの文字列が作成されます。ただし、答えはn 2でした。この関数によってメモリ内に作成される文字列は何ですか?その理由は何ですか?
17 java  strings  object 

3
データアクセスレイヤーのテスト方法
JDBCアクセスにSpringを使用するDAOメソッドがあります。これは、アイテムを販売する売り手の成功率を計算します。 コードは次のとおりです。 public BigDecimal getSellingSuccessRate(long seller_id) { String sql = "SELECT SUM(IF(sold_price IS NOT NULL, 1, 0))/SUM(1) FROM transaction WHERE seller_id = ?"; Object[] args = {seller_id}; return getJdbcTemplate().queryForObject(sql, args, BigDecimal.class); } このメソッドまたはDAOメソッドをJUnitでテストするにはどうすればよいですか?データアクセスロジックをテストするためのベストプラクティスは何ですか?いくつかのデータがロードされた埋め込み可能なデータベースに対してテストすることを考えていますが、RDBMSとスキーマの点で本番環境と同様の統合テストを行うべきではありませんか?

4
Javaのように、Scalaがパッケージのインポートに「*」ではなく「_」演算子を使用するのはなぜですか?
私の意見では、Scalaの最大の利点の1つは、Javaとの相互運用性および類似の構文です。奇妙なことに_気づい*たのは、Javaで使用されている演算子の代わりに、パッケージウィルカードのインポートに演算子を使用していることです。 の_代わりに使用する技術的な理由はあり*ますか?そうでない場合、なぜこの変更が行われたのですか?
17 java  scala 

3
Scalaでの未チェックの例外の決定
Javaプログラマーとして、私は未確認の例外に対して常に批判的でした。ほとんどのプログラマーは、後でトラブルを引き起こす場合にのみ、コーディングの容易さへの途中でそれを使用します。また、チェックされた例外を持つプログラム(乱雑ですが)は、チェックされていない対応するプログラムと比較して非常に堅牢です。 驚くべきことに、ScalaにはChecked Exceptionsと呼ばれるものはありません。Scalaでは、チェックされているJavaとチェックされていないJavaはすべてチェックされていません。 この決定の背後にある動機は何ですか?私にとっては、外部コードを使用するときにさまざまな問題が発生します。また、偶然ドキュメントの質が悪い場合は、KILLになります。

3
状態パターンは、リスコフ代替原理に違反していますか?
この画像は、ドメイン駆動のデザインとパターンの適用:C#および.NETの例を使用したものです。 これは、a がその存続期間中に異なる状態を持つことができる状態パターンのクラス図ですSalesOrder。異なる状態間では特定の遷移のみが許可されます。 これでOrderStateクラスはabstractクラスになり、そのすべてのメソッドはそのサブクラスに継承されます。Cancelled他の状態への遷移を許可しない最終状態であるサブクラスを考慮する場合override、このクラスのすべてのメソッドで例外をスローする必要があります。 サブクラスは親の振る舞いを変えてはいけないので、今ではそれはリスコフの代用原則に違反していないのですか?抽象クラスをインターフェイスに変更すると、これが修正されますか? これはどのように修正できますか?

5
springまたはhibernateまたはその他のJava Webフレームワークを学習するには、サーブレットとJSPを知る必要がありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は多くの人々にJava Web開発の学習を始める場所を尋ねてきましたが、コアJava(スレッド、ジェネリック、コレクション、(JDBC)の少しの経験)はすでに知っていますが、JSPとサーブレットは知りません。サーバーサイドにPHPを使用し、クライアントサイドにHTML、CSS、Javascript、HTML5を使用するいくつかのWebベースのアプリケーションで、開発の公平な配分を行いました。 私が尋ねたほとんどの人は、Hibernateにすぐに飛びつくように私に言ったが、一部の人は私がサーブレットとjspを学ぶ必要はなく、すぐにSpringフレームワークを勉強すべきだと言った。これは本当ですか?休止状態またはSpringを学習するためにサーブレットとJSPを学習する必要はありませんか? 彼らの答えはすべて私を混乱させ、今私は何を学ぶか勉強するかを完全に失います。JSPとサーブレットの学習をスキップした場合、将来役立つと思われる多くの重要な概念を見逃してしまうと思います。 だから、質問は、spring / hibernateまたは他のJava Webフレームワークを学ぶために、基礎と知識のサーブレットとJSPが必要ですか?

5
存在しない場合にgetで何かを作成するのは悪いコーディング習慣ですか?
だから私はgetAccountそれがそれを取得した場合、アカウントに識別子を返すようなものを持っているウェブサービスを持っている、そうでなければ例外をスローします。クライアントは、取得と同じ情報で例外がスローされた場合、常にアカウントを作成したいと思うでしょう。 クライアント用の便利なライブラリを作成しています。このライブラリは、内部ですべてのWebサービス呼び出しを処理するため、呼び出しを自分で行う方法を知る必要はありません。 私が疑問に思っているのはgetAccount(accountName)、アカウントが存在する場合にアカウントを取得するものを作成し、それを作成して情報を返さない場合、それは悪いことですか?例外を処理するためにクライアントに任せるか、単にgetOrCreateAccountのような名前を付ける必要がありますか?それは重要ですか? get操作で何かを作成するのは悪い習慣ですか?

5
PythonがJavaより遅いが、PHPより速いのはなぜですか[非公開]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 特定のタスクで多くの言語がどのように機能するかを示すさまざまなベンチマークを見てきました。 これらのベンチマークは、PythonがJavaよりも遅く、PHPよりも速いことを常に明らかにしています。なぜそうなのか疑問に思います。 Java、Python、およびPHPは仮想マシン内で実行されます 3つの言語はすべて、プログラムをOS 上で実行されるカスタムバイトコードに変換するため、ネイティブで実行されるものはありません JavaとPythonは両方とも「コンパイル」できますが(.pycPythonの場合)、Pythonの__main__モジュールはコンパイルされません。 PythonとPHPは動的に型付けされ、Javaは静的に型付けされます-これがJavaの方が高速である理由です。 また、dynamic-vs-static引数が正しい場合でも、PHPがPythonより遅い理由は説明できません-両方とも動的言語であるためです。 いくつかのベンチマークはこちらとこちら、そしてこちらでご覧いただけます

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