论坛首页 Java企业应用论坛

动态properties转换

浏览 31991 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-05-13  
引用


我的方案也差不多啦,IDE 里面 rename 一下,然后也只要改一处字符串就好。


这个,没懂啊。怎么能只改一处字符串的?假设有10个test case都依赖Foo。
0 请登录后投票
   发表时间:2008-05-21  
不明白为什么需要这么处理,标准的简单问题复杂化
0 请登录后投票
   发表时间:2008-05-21  
搞了一堆代码去代替原来很清晰的一堆代码,有意思吗?
0 请登录后投票
   发表时间:2008-06-10  
@interface Foo {  
  int id();  
  String name() default "";  
  Gender sex();  
}  
 
Map<String, String> map = ...;  
Foo foo = PropertyConverter.to(Foo.class).from(map);  
foo.id();  
foo.name(); 


没见过这种用法,学习
0 请登录后投票
   发表时间:2008-06-10  
我觉得完全可以在这里问题上使用state模式,或者命令模式,或者使用aop来实现类型转换,那样楼主肯定觉得更优雅
0 请登录后投票
   发表时间:2008-06-10  
感觉可以参考spring里面的类型转换吧,它好像用的是java的PropertyEditorSupport,感觉可以参考参考啊
0 请登录后投票
   发表时间:2008-06-16  
呵呵,精益求精啊,不过有个地方参数顺序好像错了:

public final class PropertyConverter<T> {
  private final Class<T> targetType;
  
  private PropertyConverter(Class<T> targetType) {...}

  public static <T> PropertyConverter<T> to(Class<T> targetType) {
    return new PropertyConverter<T>(targetType);
  }

  public T from(final Map<String, String> map) {
    return Proxy.newProxyInstance(
      new Class[]{targetType}, targetType.getClassLoader(), new InvocationHandler() {
        public Object invoke(Object proxy, Method method, Object[] args) {
          String value = map.get(method.getName());
          if (value == null) {
            Object defaultValue = method.getDefaultValue();
            if (defaultValue == null) {
              throw ...;
            }
            return defaultValue;
          }
          return convert(value, method.getReturnType());
        }
    });
  }
}

11行,我看api里是下面这样的啊
newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) 


0 请登录后投票
   发表时间:2008-07-12  
签名,泛型,代理
都是自己平时很少用到的,运行一下,学习一下
0 请登录后投票
   发表时间:2008-07-12  
apache beanutils中
dwr中
jsf myfaces中

都有基本类型的转换实现。


自己反射下属性(beanutils也可以帮忙),加自动转换类型。
lz的东西就好了。
0 请登录后投票
   发表时间:2008-07-19  
恩,不错,method.getReturnType 都用上了。动态代理的价值全被体现了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics