最近在寫對外開放的介面遇到乙個問題就是有些敏感資料不想返回給前台,但又不的不去查詢,於是就想到再建乙個實體類然後把需要展示的資料set進去發現太麻煩,而且**也很長,所以就是用了spring自帶的方法。
beanutils.
copyproperties
(「原始資料」, 「展示給前台的資料」)
; 但這個只能是乙個實體類的轉不能list的批量轉
原始碼:
private
static
void
copyproperties
(object source, object target,
@nullable class<
?> editable,
@nullable string.
.. ignoreproperties)
throws bean***ception
actualeditable = editable;
}//獲取實體類的所有欄位名稱
propertydescriptor[
] targetpds =
getpropertydescriptors
(actualeditable)
;//需要複製的實體類欄位名
list
ignorelist = ignoreproperties != null ? arrays.
aslist
(ignoreproperties)
: null;
propertydescriptor[
] var7 = targetpds;
int var8 = targetpds.length;
for(
int var9 =
0; var9 < var8;
++var9)
//獲取改變類的值
object value = readmethod.
invoke
(source);if
(!modifier.
ispublic
(writemethod.
getdeclaringclass()
.getmodifiers()
))writemethod.
invoke
(target, value);}
catch
(throwable var15)}}
}}}static
public
static propertydescriptor[
]getpropertydescriptors
(class<
?> clazz)
throws bean***ception
物件的複製
物件的複製 include box.h include using namespace std int main 這裡首先宣告了乙個物件box1 12,34,56 實引數為12,34,56,然後我再宣告乙個物件box2,並將物件box1賦值給物件 box2,所以box2就獲得box1的同款實參,同理...
物件的深度複製
深度複製就是將引用成員指向的物件也進行複製。實際的過程是建立新的引用成員指向的物件,然後複製物件包含的資料。深度複製可能會變得非常複雜,因為引用成員指向的物件可能包含另乙個引用型別成員,最簡單的例子就是乙個線性鍊錶。如果乙個物件的成員包含了對於線性鍊錶結構的乙個引用,淺度複製 只複製了對頭結點的引用...
陣列物件的複製
public static void main string args int a2 a1 乙個陣列物件可以被兩個陣列物件同時引用 a2 0 6 system.out.println a1 0 6 這種現象叫做陣列賦值,可以發現如果這樣複製,陣列物件沒有隔離性,不小心就修改了 所以使用陣列的複製實現...