Drei Methoden zum Kopieren von Objekteigenschaften:
1. BeanUtil.copyProperties und PropertyUtil.copyProperties bereitgestellt von Apache
BeanUtils.copyProperties("Converted class ", " Zu konvertierende Klasse"); //Ein weiterer Schritt der Typkonvertierung, noch weniger effizient als PropertyUtils
PropertyUtils.copyProperties( "Converted class" , "Umzuwandelnde Klasse");
Tipp: Später bezahlen (später bezahlen) Vorderseite: Letztere wird kopiert nach vorne) löst eine Ausnahme aus
2. BeanUtil.copyProperties-Methode bereitgestellt von Spring
BeanUtils.copyProperties("Die zu konvertierende Klasse", "Konvertierte Klasse");
Die Reihenfolge der Apache-Parameter ist umgekehrt
3 von cglib bereitgestellte Methode
BeanCopier copy=BeanCopier.create("Klasse zu konvertieren", "Konvertierte Klasse", false);
copy.copy(from, to, null);
4. Die von Spring bereitgestellte Kopiermethode
BeanCopier copy=BeanCopier create( „Zu konvertierende Klasse“, „Konvertierte Klasse“, false);
copy.copy(from, to , null);
1 /**2 * Created by hunt on 2017/6/28.3 */4 @Data5 public class TestFrom {6 private String name;7 }
1 import lombok.Data;2 3 /**4 * Created by hunt on 2017/6/28.5 */6 @Data7 public class TestTo {8 private String name;9 }
BeanUtils-Effizienztest der ersten Apache-Methode:
1 import org.apache.commons.beanutils.BeanUtils; 2 3 import java.lang.reflect.InvocationTargetException; 4 5 /** 6 * Created by hunt on 2017/6/28. 7 */ 8 public class TestDemo { 9 public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {10 TestFrom testFrom = new TestFrom();11 testFrom.setName("hunt");12 TestTo testTo = new TestTo();13 long begin = System.currentTimeMillis();14 for (int i = 0; i <1000000 ; i++) {//一百万次15 BeanUtils.copyProperties(testTo,testFrom);16 }17 long end = System.currentTimeMillis();18 long mis = end -begin;19 System.out.println("apache的BeanUtils.copyProperties耗时" + mis +"毫秒");20 System.out.println(testTo);21 }22 }
PropertyUtils-Effizienztest der ersten Apache-Methode:
1 import org.apache.commons.beanutils.PropertyUtils; 2 3 import java.lang.reflect.InvocationTargetException; 4 5 /** 6 * Created by hunt on 2017/6/28. 7 */ 8 public class TestDemo { 9 public static void main(String[] args) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {10 TestFrom testFrom = new TestFrom();11 testFrom.setName("hunt");12 TestTo testTo = new TestTo();13 long begin = System.currentTimeMillis();14 for (int i = 0; i <1000000 ; i++) {//一百万次15 PropertyUtils.copyProperties(testTo,testFrom);16 }17 long end = System.currentTimeMillis();18 long mis = end -begin;19 System.out.println("apache的PropertyUtils.copyProperties耗时" + mis +"毫秒");20 System.out.println(testTo);21 }22 }
Der BeanUtils-Effizienztest der zweiten Spring-Methode:
1 import org.springframework.beans.BeanUtils; 2 3 /** 4 * Created by hunt on 2017/6/28. 5 */ 6 public class TestDemo { 7 public static void main(String[] args) { 8 TestFrom testFrom = new TestFrom(); 9 testFrom.setName("hunt");10 TestTo testTo = new TestTo();11 long begin = System.currentTimeMillis();12 for (int i = 0; i <1000000 ; i++) {//一百万次13 BeanUtils.copyProperties(testFrom,testTo);//没抛异常14 }15 long end = System.currentTimeMillis();16 long mis = end -begin;17 System.out.println("Spring的PropertyUtils.copyProperties耗时" + mis +"毫秒");18 System.out.println(testTo);19 }20 }
第三种方式cglib的copy效率测试
1 import net.sf.cglib.beans.BeanCopier; 2 3 /** 4 * Created by hunt on 2017/6/28. 5 */ 6 public class TestDemo { 7 public static void main(String[] args) { 8 TestFrom testFrom = new TestFrom(); 9 testFrom.setName("hunt");10 TestTo testTo = new TestTo();11 long begin = System.currentTimeMillis();12 for (int i = 0; i <1000000 ; i++) {//一百万次13 BeanCopier copier = BeanCopier.create(TestFrom.class,TestTo.class,false);14 copier.copy(testFrom,testTo,null);15 }16 long end = System.currentTimeMillis();17 long mis = end -begin;18 System.out.println("cglib的copier.copy耗时" + mis +"毫秒");19 System.out.println(testTo);20 }21 }
第四种方式Spring的copy效率测试
1 import org.springframework.cglib.beans.BeanCopier; 2 3 /** 4 * Created by hunt on 2017/6/28. 5 */ 6 public class TestDemo { 7 public static void main(String[] args) { 8 TestFrom testFrom = new TestFrom(); 9 testFrom.setName("hunt");10 TestTo testTo = new TestTo();11 long begin = System.currentTimeMillis();12 for (int i = 0; i <1000000 ; i++) {//一百万次13 BeanCopier copier = BeanCopier.create(TestFrom.class,TestTo.class,false);14 copier.copy(testFrom,testTo,null);15 }16 long end = System.currentTimeMillis();17 long mis = end -begin;18 System.out.println("Spring的copier.copy耗时" + mis +"毫秒");19 System.out.println(testTo);20 }21 }
总结:这四种方式的效率是由低到高。(注意Apache的PropertyUtils不能进行类型转换的问题)
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der drei Methoden zum Kopieren von Objektattributen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!