(C6)Tapestry IoC:Type Coercion

本文介绍Tapestry5中类型强制的概念及其应用。Tapestry5通过TypeCoercer服务实现对象间的类型转换,支持多种内置及自定义强制转换。文章详细解释了如何配置TypeCoercer以支持特定类型的转换。
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf  
类型强制
 
Tapestry 常常必需强制转换对象的类型。通过强制,我们能转换某些类型的对象为有相似内容的不同类型的新对象:一个常用的例子是强制转换一个string为integer或double。
 
尽管这些强制转换类型常发生在tapestry-core内(包括强制转换组件参数),这也发生在tapestry-ioc内,比如在一个构建器方法内注入一个值要优于注入一个服务。
 
在Tapestry内的相似内容,类型转换是可扩展的。根基是一个TypeCoercer服务。它的结构由许多CoercionTuples组成。每个元组(tuple)定义如何强制转换类型。强制的初始设置主要集中在不同的数字类型转换。
 
少数特殊的强制转换涉及到null;Object-->List 包裹一个独立对象作为一个单独的列表。随后我们需要null-->List来确保null抑制无效(null stays null),这优于一个单独的只有孤立的为null的元素列表。
Tapestry 可以窜改必须的强制转换。例如,假定它必须强制转换一个StringBuffer为一个Integer;TypeCoercer将串联一系列的强制转换。
1.       Object --> String
2.       String --> Long
3.       Long --> Integer
 
贡献新的强制
 
TypeCoercer 是可扩展的,你可以添加你所希望的强制转换。例如,让我们假定你有一个Money类型描绘许多现金,并且你想要能够在BigDecimal和Money间转换。此外,让我们设想Money有一个接受一个BigDecimal参数的构造器。我们将使用少量的Tapestry IOC 配置告知TypeCoercer关于这个强制转换的信息。
 
  1. public static void contributeTypeCoercer(Configuration<CoercionTuple> configuration)   
  2.    {   
  3.      Coercion<BigDecimal, Money> coercion = new Coercion<BigDecimal, Money>()   
  4.      {   
  5.        public Money coerce(BigDecimal input)   
  6.        {   
  7.          return new Money(input);   
  8.        }   
  9.      };   
  10.         
  11.      configuration.add(new CoercionTuple<BigDecimal, Money>(BigDecimal.class, Money.class, coercion));        
  12.    }   
  13.     
  此外,因为TypeCoercer知道如何强制转换Double到BigDecimal,或者由Integer到BigDecimal(到Long到Double),所有这些强制转换都能很好的工作。
 
当从null创建一个强制转换时,使用Void.cass作为源类型。例如,内建的强制转换从null到Boolean是这样实现的:
  1. configuration.add(new CoercionTuple(void.class, Boolean.class,   
  2.        new Coercion<Void, Boolean>()   
  3.        {   
  4.            public Boolean coerce(Void input)   
  5.            {   
  6.                return false;   
  7.            }   
  8.        }));  
跟网型逆变器小干扰稳定性分析与控制策略优化研究(Simulink仿真实现)内容概要:本文围绕跟网型逆变器的小干扰稳定性展开分析,重点研究其在电力系统中的动态响应特性及控制策略优化问题。通过构建基于Simulink的仿真模型,对逆变器在不同工况下的小信号稳定性进行建模与分析,识别系统可能存在的振荡风险,并提出相应的控制优化方法以提升系统稳定性和动态性能。研究内容涵盖数学建模、稳定性判据分析、控制器设计与参数优化,并结合仿真验证所提策略的有效性,为新能源并网系统的稳定运行提供理论支持和技术参考。; 适合人群:具备电力电子、自动控制或电力系统相关背景,熟悉Matlab/Simulink仿真工具,从事新能源并网、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 分析跟网型逆变器在弱电网条件下的小干扰稳定性问题;② 设计并优化逆变器外环与内环控制器以提升系统阻尼特性;③ 利用Simulink搭建仿真模型验证理论分析与控制策略的有效性;④ 支持科研论文撰写、课题研究或工程项目中的稳定性评估与改进。; 阅读建议:建议读者结合文中提供的Simulink仿真模型,深入理解状态空间建模、特征值分析及控制器设计过程,重点关注控制参数变化对系统极点分布的影响,并通过动手仿真加深对小干扰稳定性机理的认识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值