- <pre code_snippet_id="129671" snippet_file_name="blog_20131226_1_6439347" name="code" class="java">import java.lang.annotation.Documented;
- import java.lang.annotation.ElementType;
- import java.lang.annotation.Inherited;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
- import java.lang.annotation.Target;
- @Target(ElementType.METHOD)
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Inherited
- public @interface Convert {
- public String from();
- public String to();
- }
- /**
- * 将fromObject对象转换为toObject对象,fromObject必须在对应的get方法上有Convert注解
- */
- public static void convertTo(Object fromObject, Object toObject) {
- if (fromObject != null) {
- Method[] methods = fromObject.getClass().getMethods();
- for (Method method : methods) {
- if (method.isAnnotationPresent(Convert.class)) {
- Convert annotation = method.getAnnotation(Convert.class);
- String express = annotation.to();
- Object value;
- try {
- value = method.invoke(fromObject);
- if (value != null) {
- logger.debug(fromObject.getClass().getName() + " " + express + " is not null");
- Ognl.setValue(express, toObject, value);
- }
- } catch (OgnlException e) {
- logger.error(fromObject.getClass().getName() + " " + express + " convert ognl exception:", e);
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- logger.error(fromObject.getClass().getName() + " " + express + " convert argument exception:", e);
- } catch (IllegalAccessException e) {
- logger.error(fromObject.getClass().getName() + " " + express + " convert access exception:", e);
- } catch (InvocationTargetException e) {
- logger.error(fromObject.getClass().getName() + " " + express + " convert invocation exception:", e);
- }
- }
- }
- }
- }
- /**
- * 将fromObject对象转换为toObject对象,toObject必须在对应的set方法上有Convert注解
- */
- public static void convert(Object fromObject, Object toObject) {
- if (fromObject != null) {
- Method[] methods = toObject.getClass().getMethods();
- for (Method method : methods) {
- if (method.isAnnotationPresent(Convert.class)) {
- Convert annotation = method.getAnnotation(Convert.class);
- String express = annotation.from();
- Object value;
- try {
- value = Ognl.getValue(express, fromObject);
- if (value != null) {
- logger.debug(fromObject.getClass().getName() + " " + express + " is not null");
- method.invoke(toObject, value);
- }
- } catch (OgnlException e) {
- logger.error(fromObject.getClass().getName() + " " + express + " convert ognl exception:", e);
- } catch (IllegalArgumentException e) {
- logger.error(fromObject.getClass().getName() + " " + express + " convert argument exception:", e);
- } catch (IllegalAccessException e) {
- logger.error(fromObject.getClass().getName() + " " + express + " convert access exception:", e);
- } catch (InvocationTargetException e) {
- logger.error(fromObject.getClass().getName() + " " + express + " convert invocation exception:", e);
- }
- }
- }
- }
- }
- </pre><br>
- <br>
- <pre></pre>
一种java拷贝属性的方法
最新推荐文章于 2024-08-30 17:11:22 发布