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

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

1
Java正規表現パターン-時定数またはインスタンスメンバーをコンパイルしますか?
現在、正規表現でマッチングを行っているシングルトンオブジェクトがいくつかあり、私Patternのsは次のように定義されています。 class Foobar { private final Pattern firstPattern = Pattern.compile("some regex"); private final Pattern secondPattern = Pattern.compile("some other regex"); // more Patterns, etc. private Foobar() {} public static Foobar create() { /* singleton stuff */ } } しかし、先日、これは悪いスタイルであり、Patternsは常にクラスレベルで定義されるべきであり、代わりにこのように見えると誰かに言われました: class Foobar { private static final Pattern FIRST_PATTERN = Pattern.compile("some regex"); private …


4
インターフェイスを実装し、他のクラスを実装しないクラスでのみ使用可能なメソッドを呼び出すより良い方法はどれですか?
基本的に、特定の条件が与えられたときにさまざまなアクションを実行する必要があります。既存のコードはこのように書かれています 基本インターフェース // DoSomething.java interface DoSomething { void letDoIt(String info); } 最初のワーカークラスの実装 class DoItThisWay implements DoSomething { ... } 2番目のワーカークラスの実装 class DoItThatWay implements DoSomething { ... } メインクラス class Main { public doingIt(String info) { DoSomething worker; if (info == 'this') { worker = new DoItThisWay(); } else { worker …

5
メモリ管理言語の参照カウントパターン?
Javaと.NETには、メモリを管理するすばらしいガベージコレクターと、外部オブジェクト(Closeable、IDisposable)を迅速に解放する便利なパターンがありますが、それらは単一のオブジェクトによって所有されている場合のみです。一部のシステムでは、リソースは2つのコンポーネントによって個別に消費される必要があり、両方のコンポーネントがリソースを解放するときにのみ解放される場合があります。 最新のC ++ではshared_ptr、を使用してこの問題を解決しますshared_ptr。すべてのが破棄されると、リソースが確定的に解放されます。 オブジェクト指向の非決定論的にガベージコレクションされたシステムに単一の所有者がいない高価なリソースを管理およびリリースするための文書化された実証済みのパターンはありますか?

1
CharSequenceがcontains(CharSequence)を定義しないのはなぜですか?
契約は同一なので、これはJava SEとAndroidの両方に適用されます。 Java SEのCharSequenceドキュメント Android用CharSequenceドキュメント CharSequencecontains(CharSequence)メソッドを定義しません。私は理由を見つけることができないようで、それを含めることは非常に有用でありCharSequence#toString()、文字のシーケンスをチェックするために呼び出す必要を防ぎます。 例えば、Androidの中で、ユーザーが呼び出すことを余儀なくされているEditable#toString()にもかかわらず、それは文字の配列を含むかどうかを確認するためにEditable実装しCharSequenceた場合に回避することができ、CharSequence定義されましたcontains(CharSequence)。 この設計選択の背後にある考え方は何ですか?それは潜在的な見落としですか、またはこれには設計上の理由がありますか?

1
2000以上のクライアントマシンのアプリケーションサーバーとしてのRESTサービス。それは良い考えですか?
2000以上のマシンにデプロイされるjavaFxのUIを使用してシステムを構築します(最小は2000ですが、さらに多くなります-5000台のマシンに到達できます)。 他の理由/制限のため、マシンにインストールする必要があるため、Webブラウザーインターフェイスでは実行できません。 2000台以上のマシンは、異なる地理的ロケーショングループに属します。一般に接続は良好ですが、より多くの遠隔地ではそれほど良好ではない場合があります。 データベースに直接アクセスする代わりに、Spring + Spring Boot + Spring Data(java)を使用してRESTサービスクラスターを構築することを考えています。 RESTサービスはJsonを受け入れて返します。 私はそれが良い考えだと思う: サービスはデータベース接続プールとして機能します(データベースで2000以上の接続を行うと問題が発生すると思います)。 一部のクエリを処理するために、他の読み取り専用データベースへのログ配布を備えたデータベースを使用することができます。 より多くのマシンを追加してRESTサービスを実行できるため、スケーラビリティが向上します。 セキュリティおよび帯域幅節約の理由で、圧縮されたHTTPSを使用することができます。 2000以上のマシンを再デプロイせずに、ビジネスエンティティに集中的な変更を加えることができます。 他のシステムとの統合性が向上します(RESTサービスをポイントするだけです)。 それは本当に良いアイデアですか? 肯定的または否定的な経験を共有できますか? ありがとうございました。
11 java  design  rest  spring 

2
トランザクションを使用したビジネスロジックとDBロジックの分離
アプリケーションには3つのレイヤーがあります。外部APIを提供するサービスレイヤー。ビジネスロジック用のBOレイヤー、およびデータベース接続用のDAOレイヤー。 ファイルを更新するたびに、フォルダ内の何か、たとえば「最終変更日」も変更したいとします。これは、トランザクションで実行する必要があります。成功し、ファイルとフォルダーの両方が編集されます。または、障害が発生し、トランザクションがロールバックされるため、両方のオブジェクトが以前の状態になります。 「ファイルが編集されたときにフォルダーを編集する」アクションは、純粋にビジネスロジックです。したがって、これはBOレイヤーに属していることを意味します。ただし、データベースにはObjectifyを使用しているため、トランザクションを開始するにはofy()。transact(...)を呼び出す必要があります。BOレイヤーでこの関数を呼び出すと、ビジネスレイヤーでデータベース固有の呼び出し(Objectify)が発生するため、デザインが破損します。 この問題のクリーンなソリューションは何でしょうか?

1
多くのブール型プロパティを持つ列挙型
現在、ユーザーに返されるページに基づいてサーバーロジックを調整する必要があることが多いwebappに取り組んでいます。 各ページには4文字のページコードが与えられ、これらのページコードは現在、静的な文字列としてクラスにリストされています。 public class PageCodes { public static final String FOFP = "FOFP"; public static final String FOMS = "FOMS"; public static final String BKGD = "BKGD"; public static final String ITCO = "ITCO"; public static final String PURF = "PURF"; // etc.. } そして、多くの場合、コードには次のようなコードが表示されます(1番目の形式): if (PageCode.PURF.equals(destinationPageCode) || PageCodes.ITCO.equals(destinationPageCode)) { …
11 java  design  enum 

7
インターフェース設計でジェネリックを使用する場合
サードパーティが将来実装する予定のインターフェイスがいくつかあり、自分で基本実装を提供します。例を示すためにカップルを使用するだけです。 現在、それらは次のように定義されています 項目: public interface Item { String getId(); String getName(); } ItemStack: public interface ItemStackFactory { ItemStack createItemStack(Item item, int quantity); } ItemStackContainer: public interface ItemStackContainer { default void add(ItemStack stack) { add(stack, 1); } void add(ItemStack stack, int quantity); } 今、ItemそしてItemStackFactory私は、将来それを拡張する必要のあるサードパーティを絶対に予測することができます。ItemStackContainer将来的に拡張することもできますが、提供されているデフォルトの実装以外では、予測できる方法では拡張できません。 今、私はこのライブラリを可能な限り堅牢にしようとしています。これはまだ初期段階(プレプレアルファ)であるため、これは過剰エンジニアリング(YAGNI)の行為である可能性があります。これはジェネリックを使用するのに適切な場所ですか? public interface ItemStack<T extends Item> { …
11 java  generics 

5
突然変異法のための独立したインターフェース
私はいくつかのコードのリファクタリングに取り組んできましたが、ウサギの穴を降りる最初の一歩を踏み出したのではないかと思います。私はJavaで例を書いていますが、それは不可知論的であると思われます。 次のようにFoo定義されたインターフェイスがあります public interface Foo { int getX(); int getY(); int getZ(); } そして、実装として public final class DefaultFoo implements Foo { public DefaultFoo(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } public int getX() { return x; } public int getY() { …

1
アワビのようなゲームの六角形ボードロジックを効率的に表現する方法
AIをAbaloneゲームに実装する必要があり、関連するすべてのチェックおよび更新ルーチンで多くのリソースを無駄にせずに、Javaを使用してボードロジックを表現する最良の方法は何か疑問に思っています。 さまざまなリストを使用する方が良いですか?Cellオブジェクトのマトリックス?なにか提案を?

5
Javaのブールクラス-列挙型ではないのはなぜですか?
ブールクラスは列挙型として実装するのに理想的な候補であるように思えます。 ソースコードを見ると、ほとんどのクラスは静的メソッドであり、変更せずに列挙型に移動できますが、残りは列挙型としてはるかに単純になります。オリジナルを比較(コメントと静的メソッドは削除): public final class Boolean implements java.io.Serializable, Comparable<Boolean> { public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); private final boolean value; public Boolean(boolean value) { this.value = value; } public Boolean(String s) { this(toBoolean(s)); } public boolean booleanValue() { return value; …
11 java  api  source-code 

3
電子メールサーバーを使用せずに電子メールを送信する
JavaMailは、通常は電子メールプロバイダーのSMTPインターフェイスを介して、電子メールサーバーを使用して電子メールを送信します。電子メールを送信するために電子メールサーバーを使用する必要がありますか? 電子メールを送信するWebサイトがあり、可能であれば、電子メールサーバーを使用せずに、Webサイトコードから直接電子メールを送信したいと思います。JavaMail FAQには、電子メールサーバーが必要であると書かれています。 JavaMailまたは別のAPIを使用して、電子メールサーバーを使用せずに電子メールを送信する方法はありますか?
11 java  email 

6
Javaで静的コンストラクターを使用する
Javaの静的コンストラクターを完全に理解できませんでした。許可されている場合、なぜ許可されているのですか?どのシナリオで使用しますか?それはどのような目的に役立つでしょうか?誰か簡単な例を教えてもらえますか?
11 java 


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