java物件完全轉殖有法可遵

2021-09-01 10:30:48 字數 2038 閱讀 2036

jsp頁面的值是通過struts的action注入的pojo實體類屬性來賦值的:

例如:頁面有...等等控制項,他們的值都進行了類似的繫結。那麼在對應的action中必然有users類的物件users與之對應,且有setter和getter方法。

那麼關鍵來了,這個時候,我們頁面要做乙個修改功能,通常我們的做法是:

1.1 先通過hibernate的  load(類.class,主鍵值)  或者get(類.class,主鍵值)得到欲修改的物件的控制代碼,我們暫且把他取名為entity;

1.2 然後就是要把頁面上不為空(null)的控制項的值填充到entity中,這裡也就是把users中不為空的屬性的值覆蓋掉entity裡的值;

我們通常的做法是:

if(users.name!=null)

if(users.email!=null)

.

.

.

這個要是pojo實體users類只有幾個欄位那也就罷了,可是要是不幸的有三四十個字段,那絕對能搞死你呀!!!

怎麼辦?

(2)這個方法是這樣的,有時候你會呼叫乙個類的方法,這個方法呢有乙個物件引數,這個物件在呼叫方法裡要使用,在被呼叫方法裡也要使用而且不能衝突,啥意思?看例子:

public role role = new role();

public void amethod(users users)

public void bmethod()); //獲取getter方法

method setmethod = oldclass.getclass().getmethod(setmethodname,new class);//獲取setter方法

//大家可能對上面的new class{}很疑惑,是這樣的,這是乙個空的class陣列,這個能看明白吧,那麼{}裡面存放的就是class,他表示這個方法的引數型別。

//如上的setmethod:

// ,new class表示setter方法的第乙個引數的型別同field一樣

//下面就是關鍵了:首先呼叫oldclass中getmethod,得到值,然後判斷值是否為空,不為空再賦值給newclass物件的對應字段

object getvalue = getmethod.invoke(oldclass, new object{});

if(getvalue!=null));

}

}}

/**完全賦值乙個類的例項

* @param object

* @return

* @throws exception

* @author chenqz

* @date 2023年9月5日 17:41:42

*/public t copy(t object) throws exception );

method setmethod = classtype.getmethod(setmethodname, new class );

object getvalue = getmethod.invoke(object, new object {});

setmethod.invoke(consobj, new object );

} return (t) consobj; }

public static void main(string args) catch (exception e)

} }class users

public void setusername(string username)

public string getemail()

public void setemail(string email)

}

JAVA 物件轉殖clone

有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...

Java中的物件轉殖

當拷貝乙個變數時,原始變數和拷貝變數引用同乙個物件,當改變乙個物件的例項域的值時,其他的物件相應的也將受到影響。employee em new employee em2 em 如果建立乙個物件的新的copy,它的最初狀態和original一樣,但以後將可以各自改變各自的狀態,那就需要使用clone方...

java物件比較器和轉殖

一.比較器comparable和comparator public class mystring person b arrays.sort a for int i 0 i system.out.print a i system.out.print r n arrays.sort b for int ...