2017-04-10 14 views
-2

私はいくつかのより多くの機能のためにこれを使用するつもりです(実際に私のアンドロイドのプロジェクトで)Javaで以下のような文字列変数で動作するカスタム機能を追加するためにStringクラスにcustomizeメソッドを追加することはできますか?

String name="tester"; 
name.isAlreadyEntered(); 

public static boolean isAlreadyEntered(String name){ 
    return (checkInMyDb(name)); 
} 

をしようとしています。私はその少しばかげた質問を知っています。私はこれが.netにjavascript &に存在することを知っています。私はJavaに新しいので、私はその可能性を認識していません。私が間違って尋ねている場合、許してください。しかし、可能であれば、この構文を取得する方法について私に助けてください

+4

Javaでは、標準クラスに新しいメソッドを追加する機能はサポートされていません。 – khelwood

+0

'' String''クラスはfinalクラスなので、サブクラス化することはできません。 – f1sh

+4

あまり意味がありません。データベースのクラスがあれば、そこに追加して、 'myDatabase.containsPerson(name)'のようなものを使うことができます。 'isAlreadyEntered()'よりもはるかに表現力豊かなので、どこに入力するかについての文脈を与えません。 – Flikk

答えて

1

本当に新しいメソッドをjava.lang.String.javaに追加するつもりなら、あなたはたぶん間違った経路におり、今後は苦痛と苦しみを引き起こします。より良い停止、再設計とリファクタリングの再考。

とにかくまずいいえStringクラスに新しいメソッドを追加することはできません。それは最終的なものなので、あなたはそれをサブクラス化するつもりはありません。あなたがそうするつもりなら、それはあなたがリファクタリングする必要がある貧しいデザインです。

Stringがデータベースに存在するかどうかを確認したい場合は、タイプStringのパラメータを受け入れる方法を宣言し、データベースにその存在をチェックし、見つかった場合はtrueを返します。falseを返します。

上記の解決策がうまくいかない場合は、Compositionのtakimg helpを試すことができます。このようなメソッド(オブジェクトがdbに存在するかどうかを確認できる)を持つオブジェクトが必要な場合は、クラスを作成し、コンテキスト上のニーズに従って名前を付けることができます。StringContainerという名前を付けます。このクラスは、タイプ変数Stringを持つことができます。 Stringオブジェクトを使用する代わりに、Stringのオブジェクトを構成するこの新しく作成されたカスタムクラスのオブジェクトを使用できます。このクラスのオブジェクトに対応するエントリがデータベースに作成されたかどうかを確認するメソッドを含めることができます。

関連する問題