1

Objectのプロパティが文字列と等しいかどうかを比較する方法はありますか?

以下は、Objet という名前のサンプルです。Person

public class Person {

    private String firstName;
    private String lastName;

    public Person(String firstName, String lastName){
        super();
        this.firstName = firstName;
        this.lastName = lastName;
    }

    //.... Getter and Setter

}

Personこれで、その文字列がプロパティ名と同じかどうかを確認する必要があるメソッドができました。

public boolean compareStringToPropertName(List<String> strs, String strToCompare){
    List<Person> persons = new ArrayList<Person>();
    String str = "firstName";

    // Now if the Person has a property equal to value of str, 
    // I will store that value to Person.
    for(String str : strs){

        //Parse the str to get the firstName and lastName
        String[] strA = str.split(delimeter); //This only an example

        if( the condintion if person has a property named strToCompare){
            persons.add(new Person(strA[0], strA[1]));
        }
    }

}

私の実際の問題はこれとはかけ離れています。今のところ、文字列を のプロパティに保存する必要があるかどうかをどのように知ることができますかObject。現在の私の鍵は、オブジェクトのプロパティと同じ別の文字列があることです。

ハードコードを持ちたくないので、このような条件を達成しようとしています。

("firstName")要約すると、この文字列が Object と同じプロパティ名を持っていることを知る方法はありますか(Person)?

4

2 に答える 2

5

Reflection を使用します。

http://java.sun.com/developer/technicalArticles/ALT/Reflection/

より正確には、オブジェクト (Person) のクラスがわかっていると仮定すると、Class.getField(propertyName) を組み合わせてプロパティを表す Field オブジェクトを取得し、Field.get(person) を使用して実際の値を取得します。 (存在する場合)。空白でない場合は、オブジェクトがこのプロパティに値を持っていると見なされます。

オブジェクトがいくつかの規則に従っている場合は、「Java Beans」固有のライブラリを使用できます。たとえば、次のようになります。 .基本

于 2011-05-25T11:53:43.427 に答える
4

を使用して宣言されたすべてのフィールドを取得し、getDeclaredFields()それを文字列と比較できます


例えば:

class Person {
    private String firstName;
    private String lastName;
    private int age;
    //accessor methods
}

Class clazz = Class.forName("com.jigar.stackoverflow.test.Person");
for (Field f : clazz.getDeclaredFields()) {
      System.out.println(f.getName());
}

出力

名姓
年齢


あるいは

またgetDeclaredField(name)

Returns:
the Field object for the specified field in this class
Throws:
NoSuchFieldException - if a field with the specified name is not found.
NullPointerException - if name is null

関連項目

于 2011-05-25T11:55:35.377 に答える