この記事の例では、Java がリフレクションを使用してエンティティ オブジェクトを自動的にカプセル化する方法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
このメソッドを使用する場合、渡す必要があるパラメーターの名前は行番号で終わる必要があります。行番号が削除された場合、それは属性名になります。たとえば、ページが name+rowNo を渡す場合は、属性名になります。エンティティ オブジェクトの名前は name である必要があります。コードは次のとおりです。 コードは次のとおりです。 // ページ データを取得し、それを Bean オブジェクトに自動的にカプセル化します。
public List getObjectList(Class clazz,String[] rowNos) throws Exception{
リスト objList = new ArrayList();
for(int i=0;rowNos!=null && i<rowNos.length;i++){
//オブジェクトインスタンスを作成する
オブジェクト object = clazz.newInstance();
//クラスで宣言された属性を取得する
フィールド[] フィールド = clazz.getDeclaredFields();
StringBuffer バッファ = null;
//プロパティを走査し、カプセル化を実行します
for(int j=0;j<fields.length;j++){
// 属性の名前を取得します
文字列フィールド名 = フィールド[j].getName();
//パラメータの名前を取得する
文字列 paraName = フィールド[j].getName()+rowNos[i];
//取得したパラメータ値が空の場合はループを続行
文字列値 = getValueNull(paraName);
if(値==null){
続く;
}
//パラメータ値
オブジェクト[] paramValue =新しいオブジェクト[1];
if(fields[j].getType().toString().equals("class java.lang.String")){
paramValue[0]=値;
}
if(fields[j].getType().toString().equals("class java.lang.Integer")){
paramValue[0]=新しい整数(値);
}
if(fields[j].getType().toString().equals("class java.lang.Double")){
paramValue[0]=新しいDouble(値);
}
if(fields[j].getType().toString().equals("class java.util.Date")){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
paramValue[0]=sdf.parse(値);
}
//パラメータの型
Class[] paramType= {fields[j].getType()};
//設定されたメソッドの名前を取得する
バッファ = 新しい StringBuffer("セット");
buffer.append(フィールド名.substring(0, 1).toUpperCase());
バッファ.append(フィールド名.substring(1));
//取得して元に戻す
メソッドメソッド = clazz.getDeclaredMethod(buffer.toString(), paramType);
//実行メソッド
メソッド.invoke(オブジェクト,paramValue);
}
// 現在のオブジェクトをリストに追加します
objList.add(オブジェクト);
}
objList を返します。
}
この記事が皆さんの Java プログラミングに役立つことを願っています。