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

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

3
既存の抽象クラスとそのパラメーターのリファクタリング
私が持っているabstract class A抽象メソッドを宣言しているがdoStuff。現在、を継承しAて実装するクラスが多数ありますdoStuff。 クラスのインスタンスはAFactory、ユーザー入力に基づいて実行時に初期化されます。元々、すべてのクラスには同じ単一のパラメーター(ユーザー入力)がありました。しかし今、私はAニーズを継承する新しいクラスだけである追加のパラメーターを持っています。 だから私はそれを次のロジックで分解します: ユーザー入力(AFactoryもちろん使用)に基づいてインスタンスを生成するインタープリタークラスは、この追加のパラメーターを認識していませんでした。 それをクラスインタープリタクラスにプッシュしようとすると、本当に厄介なことになります。それは、いつファクトリーに渡すかを知らなければならず、そもそもファクトリーを持つという全体の目的に反するためです。 それを何かに使うかもしれないと期待して盲目的にファクトリーに送ることも、かなり醜いようです。 私の現在の解決策:一方、にリファクタリングA.doStuff(Param param)することにしましたA.doStuff(AParams params)。 AParams必要なパラメータをすべて保持doStuffでき、興味がない場合は無視できます。これは私にとっても少し厄介なようで、WIN32APIで構造体を送信することを抑制します。この構造体は、醜く役に立たない多くのパラメーターを保持する可能性があり、私はそれが好きではありません。 この問題に取り組むよりエレガントな方法はありますか?それとも私が見落とし、これを解決したいくつかのデザインパターン? 注: Java 1.7を使用しています クラスの名前は、理論上の設計上の問題を強調するためにばかげていますが、実際には、わかりやすく意味のある名前が付けられています。 私はかなり多くのことを検索しましたが、(このコードをXスローしている理由とは対照的に)特定の抽象的な理論的な問題をWebで検索するのは非常に難しいことがわかったExceptionので、とにかく尋ねることにしたので、これが複製。 編集1: 明確化:サブクラス固有の引数をdoStuffメソッドに渡す必要があります。 編集2: 私はKilian Fothの意図を完全には理解していなかったので、問題をよりよく説明し、解決策を理解するのに役立つJava疑似コードをいくつか書きました。そう: これは私の問題の骨組みです。 これは私のソリューションの骨組みです。 これは キリアンフォスの解決策かもしれないと思いますが、よくわかりません。

5
DIを使用する場合とJavaで自分を作成する場合
私はさまざまな言語でまともな量のOOPを使用していますが、Javaはかなり新しいものです。 私はクラスのコード内に多数のオブジェクトが作成される多くのチュートリアルを読んでいますが、それらを実行しようとしていますが、チュートリアルでクラスのバージョンを構築します。クラス自体。 しかし、Javaは私が使用した他の言語とは異なり、ほとんどすべてがオブジェクトです。文字通りすべてを注入すると、結果は非常に複雑で追跡が困難になります。 明らかに、あなたはStringオブジェクトをインジェクトしないでしょう、そしてインジェクトしない他のオブジェクトがあると思いますが、行がどこに行くべきかわかりません。どの時点で、DIは正しいことをやめ、いつ負荷がかかり始めるのでしょうか?何を注入し、何をインスタンス化するかを実用的にどのように決定しますか? 参考までに、私が実行しているチュートリアルは、単純なクライアントを構築するためのhttp://edn.embarcadero.com/article/31995およびhttp://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.htmlです。サーバ。私はそれらを行ごとにコピーしていませんが、ベストプラクティスに従う同等のクラスを作成しようとしています

2
JavaとPHPのメモリ/ CPU消費
私はPHPベースの会社で働いています。バックエンドサービスを作成するプロジェクトがあります。Javaよりも遅いですが、ここの上級メンバーはPHPを採用しています。彼らの唯一の論点は、メモリとCPU負荷の両方の観点から見ると、JavaはPHPよりも重いということです。 JVMはコンテナー環境に似ています。荷物を多く持ち込むと、それだけ多くの量を消費しますが、ここで話しているサービスは中程度の複雑さになります。だから、それはそれほど厳しいことではないでしょう(またはそれはでしょうか?) 私はこの質問が曖昧に大きく傾いていることを理解していますが、私が考えていることは、それは常に同じケースですか?そのJavaはよりハードウェアを要求しますか?私は、実際のシナリオがどのように見えるかについて、あなたが経験したすべての人々の意見を知りたいです。
8 java  php  memory 

2
ファサードとしてのドメインサービス
C#を使用した.NETドメイン駆動設計:問題-設計-解決策を読んだところ、作成者が各集計ルートのドメインサービスを作成していることに気付きました。 ただし、ドメインサービスは対応するリポジトリのファサードにすぎませんでした。たとえば、これは彼の本のアプリケーションのコードサンプルです。 public static class CompanyService { private static ICompanyRepository repository; private static IUnitOfWork unitOfWork; static CompanyService() { CompanyService.unitOfWork = new UnitOfWork(); CompanyService.repository = RepositoryFactory.GetRepository<ICompanyRepository, Company>(CompanyService.unitOfWork); } public static IList<Company> GetOwners() { return CompanyService.GetAllCompanies(); } public static IList<Company> GetAllCompanies() { return CompanyService.repository.FindAll(); } public static void SaveCompany(Company company) { CompanyService.repository[company.Key] …

3
Java Generics-表現力とシンプルさのバランスを取る方法
私はジェネリックスを利用するコードをいくつか開発しています。私の指針となる原則の1つは、今日だけでなく、将来のシナリオでも使用できるようにすることでした。ただし、いくつかの同僚は、拡張性のために読みやすさを犠牲にしている可能性があると述べています。これを解決するために考えられる方法についてフィードバックを集めたかったのです。 具体的には、ここに変換を定義するインターフェースがあります。まず、項目のソースコレクションから開始し、各要素に変換を適用して、結果を宛先コレクションに保存します。さらに、宛先のコレクションを呼び出し元に返すことができるようにしたいのですが、コレクションの参照を使用するように強制するのではなく、宛先のコレクションに実際に提供したコレクションの種類を使用できるようにしたいと思います。 最後に、宛先のコレクション内のアイテムのタイプが、ソースのコレクション内のアイテムのタイプと異なるようにすることができます。これは、おそらく変換が行うためです。たとえば、私のコードでは、変換後にいくつかのソース項目が1つの宛先項目を構成しています。 これにより、次のインターフェースが生成されます。 interface Transform<Src, Dst> { <DstColl extends Collection<? super Dst>> DstColl transform( Collection<? extends Src> sourceCollection, DstColl destinationCollection); } インターフェースを適切にスーパータイプとサブタイプで使用できるようにするために、私はすべてがうまくいってJosh BlochのPECS原則(プロデューサー拡張、コンシューマースーパー)を適用しようとしました。最終結果は幾分怪物です。 さて、このインターフェースを拡張して、どういうわけかそれを特化できればいいのですが。たとえば、ソースアイテムのサブタイプとデスティネーションアイテムのスーパータイプをうまく使用する必要がない場合は、次のようにします。 interface SimpleTransform<Src, Dst> { <DstColl extends Collection<Dst>> DstColl transform( Collection<Src> sourceCollection, DstColl destinationCollection); } しかし、Javaでそれを行う方法はありません。私はこのインターフェースの実装を、恐怖で走るのではなく、他の人が実際に行うことを検討するようなものにしたいと考えています。私はいくつかのオプションを検討しました: 宛先のコレクションを返さないでください。変換を実行しても何も返されないことを考えると、奇妙に思えます。 このインターフェイスを実装する抽象クラスがありますが、パラメーターを使いやすいものに変換し、より単純なシグネチャを持つ別のメソッド "translateImpl()"を呼び出します。これにより、実装者の認識の負担が少なくなります。しかし、インターフェイスをユーザーフレンドリーにするためだけに抽象クラスを作成しなければならないのは奇妙です。 拡張性を忘れ、よりシンプルなインターフェースを備えています。おそらく、それを宛先のコレクションを返さないことと組み合わせます。しかし、それは将来の私の選択肢を制限します。 どう思いますか?使用できるアプローチがありませんか?

3
訪問者の安定性とインスタンスの柔軟性
設定ファイルを生成するGUIアプリケーションに取り組んでいます。構成モデルのクラス階層があり、その階層のオブジェクトツリーをいくつかの異なるコンテキストで使用しています。現在、ビジターパターンを使用して、コンテキスト固有のコードでモデルクラスを汚染しないようにしています。 interface IConfigurationElement { void acceptVisitor(IConfigurationElementVisitor visitor); } 以前のバージョンinstanceofでは、ビジターの代わりに一連の条件を使用していました。2つのアプローチを比較すると、次のトレードオフが見られます。 ビジター 新しいを追加する方が簡単で安全IConfigurationElementです。新しい宣言をに追加するだけIConfigurationElementVisitorで、コンパイラはすべてのビジター実装に対してエラーを生成します。ではinstanceofチェーンあなたは、新しい構成要素を拡張する必要があるすべての場所を覚えておく必要があります。instanceof複数の場所でロジックを複製するため、基本的にDRY原則に違反します。 訪問者パターンは一連の条件よりも効率的ですinstanceof instanceof の大きな利点instanceofは、その柔軟性です。たとえば、場合instanceof によっては同様にIConfigurationElement処理する必要がある実装のさまざまなサブセットに対して特別なソリューションを定義できます。対照的に、Visitorでは毎回、各実装クラスのメソッドを実装する必要があります。 この種の問題に対する一般的な解決策はありますか?どういうわけかビジターを適応させることができるので、いくつかのケースに共通のソリューションを提供できますか?

2
Javaプログラムから関数を呼び出してプリミティブ型の結果を受け取ることができるJavaでRubyファイルを実行する方法は?
何を求めているのかよくわかりません(笑!)。そうでない場合は、申し訳ありません。 Javaプログラムがあるとします。それは持っているMainとJavaCalculator、クラスを。JavaCalculatorのようないくつかの基本的な機能があります public int sum(int a,int b) { return a + b } 今、私はルビーファイルを持っていると仮定します。と呼ばれるMyProgram.rb。 MyProgram.rbルビプログラムに期待できるものをすべて含むかもしれません。次のものが含まれていると仮定します。 class RubyMain def initialize print "The sum of 5 with 3 is #{sum(5,3)}" end def sum(a,b) # <---------- Something will happen here end end rubyMain = RubyMain.new 良い。さて、あなたは私がしたいことをすでに疑っているかもしれません: Javaプログラムを実行したい Rubyファイルを実行させたいMyProgram.rb Rubyプログラムが実行されると、のインスタンスが作成され、JavaCalculatorそのsum関数が実行され、値が取得されてから出力されます。 ルビファイルは正常に実行されました。 Javaプログラムが閉じます。 注:「のインスタンスを作成するJavaCalculator」は必ずしも必要ではありません。クラスsumから関数を実行するだけで十分Mainです。 私の質問:そのようなことは可能ですか?特定の処理を実行して結果を取得するようにJavaプログラムに命令できるRubyファイルを内部で実行するJavaプログラムを実行できますか?上記の例では、RubyファイルがJavaプログラムに合計を求めて結果を返すように要求しています。 …

4
Android開発用のC / C ++を知ることは重要ですか?
Java(C ++ / NDKなし)のみを使用して、高速で美しいAndroidアプリ(3D開発を含む)を構築することはできますか? Android開発者の職位要件(求人)を探すと、C / C ++ / NDKの知識が非常に重要であることがわかりました。一部の企業では、C ++(OpenGL)のみを使用してテストタスクを構築する必要があります。
8 java  c++  c  android 

1
JavaのBigIntegerクラスに、数値リテラルを取得できるコンストラクターがないのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 JavaのBigIntegerクラスに、数値リテラルを取得できるコンストラクターがないのはなぜですか?私はBigIntegerを使用するたびに、そして多くの場合、それらについて単に考えているだけで、これは不思議に思います。 Javaの設計者は、存在するはずの1つの圧倒的な便利さにもかかわらず、1つを除外しなければならなかったのはなぜでしょうか。

1
どういうわけかソースファイルにマップされた別のdocsファイルのJavaコードドキュメント?
インラインJavaドキュメントに代わる優れた方法は何でしょうか。つまり、Javaソースファイルに何らかの方法でマップされた個別のドキュメントファイルを持つことができますか? 私はコードに散らばっている巨大なコメントセクションが好きではありません。

7
このシナリオでは、単体テストのモックが適切ですか?
私はJavaで約20のメソッドを作成し、それらすべてがいくつかのWebサービスを呼び出します。これらのWebサービスはまだ利用できません。サーバー側のコーディングを続行するために、Webサービスが提供すると予想される結果をハードコーディングしました。 これらのメソッドを単体テストできますか?私の知る限り、単体テストは入力値を模倣しており、プログラムがどのように応答するかを確認しています。入力値と出力値の両方をモックすることは意味がありますか? 編集: ここでの答えは、私が単体テストケースを書くべきであることを示唆しています。 さて、既存のコードを変更せずにそれをどのように書くことができますか? 次のサンプルコード(架空のコード)を考えます。 public int getAge() { Service s = locate("ageservice"); // line 1 int age = s.execute(empId); // line 2 return age; // line 3 } では、出力をどのようにモック化しますか? 現在、「行1」をコメントアウトして、行2をに置き換えていint age= 50ます。これは正しいですか ?誰かが私にそれを行う正しい方法を教えてもらえますか?

2
Java列挙型をパックするためのベストプラクティスは?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 Java列挙型をパッケージ化するためのベストプラクティスは何ですか? 列挙型ごとに別のファイルですか? または すべての列挙型に同じファイルがありますか? 長所と短所は何ですか?

5
If-Else VS Switchフローの終わり
場合-else文、switch文のようなものである場合、私は思っていたん break文を持っています。 if( boolean_expression_1 ) statement_1 else if( boolean_expression_2 ) statement_2 else default_statement と同じです: switch( controlling_expression ) { case: ( boolean_expression_1 ) { statement_1 break; } case: ( boolean_expression_2 ) { statement_2 break; } default: { default_statement }

3
JavaのファイルI / Oには何が適していますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 三人のうち BufferedReader / Writer バイナリストリーム チャンネル JavaでのファイルI / Oの現実において どちらがより好ましいのですか?それはなぜですか? バイナリデータをファイルに入れたり読み取ったりするためのチャネルと、文字列データ用のBufferedReader / Writerを好みます
8 java  io 


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