我正在寻找GWT的一些GXT代码,我遇到了泛型的这种使用,我在Java教程中找不到另一个例子.com.extjs.gxt.ui.client.data.BaseModelData如果要查看所有代码,则为类名.以下是重要部分:
private RpcMap map;
public <X> X get(String property) {
if (allowNestedValues && NestedModelUtil.isNestedProperty(property)) {
return (X)NestedModelUtil.getNestedValue(this, property);
}
return map == null ? null : (X) map.get(property);
}
Run Code Online (Sandbox Code Playgroud)
X在类中或层次结构中的任何地方都没有定义,当我在eclipse中点击"go to declaration"时,它只会进入<X>公共方法签名.
我试着用以下两个例子调用这个方法来看看会发生什么:
public Date getExpiredate() {
return get("expiredate");
}
public String getSubject() {
return get("subject");
}
Run Code Online (Sandbox Code Playgroud)
他们编译并显示没有错误或警告.我认为至少我必须做一个演员才能让它发挥作用.
这是否意味着Generics允许魔法返回值可以是任何东西,并且会在运行时爆炸?这似乎与泛型应该做的事情相反.任何人都可以向我解释这一点,并可能给我一些链接到一些文档,解释这一点好一点?我已经浏览了Sun关于泛型的23页pdf,并且返回值的每个示例都是在类级别定义的,或者是传入的参数之一.
所以我对Web服务有点新意,最近出现了一种情况,我们在数据类型中添加了一个返回给客户端的元素.客户抱怨这打破了他们的实施,因为它扼杀了它没想到的新元素.(我们通过Axis2提供服务).
对我来说,这似乎是一个无害的变化,客户端应该能够优雅地处理(我已经使用了一些非Web服务框架,其中添加可选信息是完全可以接受的).我可以理解,如果我们删除或重命名了一些会导致客户端出现问题的字段.
基本上我希望wsdl像界面一样.如果我们进行基本上是接口的子类型的更改,我希望客户端愉快地忽略无关的元素.这只是网络服务的短暂出现,还是有一种理智的方式对服务进行被动更改,以便新客户可以获得额外的数据,而老客户可以在闲暇时更新?
Bakground:我有一个我正在研究的遗留应用程序,它使用DATE类型在数据库中进行大部分时间存储.我想尝试更新其中一些表,以便他们可以利用时区,因为这会导致db所在的不同区域的用户出现问题(参见下面的A).这适用于Oracle 10g.
Quetions:
1)我可以"就地"迁移这个.我可以像这样转换
DATE_COL = type:DATE => DATE_COL = type:TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
...或者我必须使用不同的列名吗?
请记住,需要保留数据.如果这可以在迁移脚本中轻松完成,那么它将适用于我的目的.
2)这种类型的转换是否会向后兼容?我们可能会有一些脚本或报告会出现在我们可能不知道的表中.我们可以处理它,但我想知道我正在走进什么样的大黄蜂窝.
3)我应该注意哪些陷阱?
谢谢,
编辑:(
部分回应加里)
我很好,有一个多步骤的过程.
1)使用某种转换将数据移动到新的Timestamp列(caled TEMP)2)删除旧列(我们称之为MY_DATE)3)使用旧日期列名称(MY_DATE)创建新的timestamp列4)移动数据到MY_DATE列5)删除TEMP列
一个加里还希望了解具体的时区的问题予以澄清.我从下面复制了我的答案,以使其更具可读性.
基本上,数据将从几个不同的区域访问.我们需要能够根据需要转换为本地时区/从本地时区转换.我们还有使用sysdate进一步使事情变得复杂的触发器.带有时区的时间戳减轻了很多这种痛苦.
哦,谢谢你到目前为止的答案.
我对Java 5注释有点新意,我很好奇其中任何一个都是可能的:
此注释将为您生成一个简单的getter和setter.
@attribute
private String var = "";
Run Code Online (Sandbox Code Playgroud)
该@NotNull注解表明变量是粗野,空,这样你就不必每次都写样板代码.
/*
* @param s @NotNull
*/
public void setString(String s){
...
}
Run Code Online (Sandbox Code Playgroud)
这些都可以吗?如果可以的话,它们似乎是我会写注释的第一件事.因为当我阅读文档时,我没有看到太多这些,我假设它不是真正的注释.这里的任何方向将不胜感激.
我喜欢现在与Eclipse捆绑在一起的SQL编辑器,但我似乎找不到像我的java那样用eclipse格式化代码的方法.
我错过了什么,或者有没有其他选择?
谢谢
==== ====编辑
如果有人可以推荐的备用插件,我也会很高兴.
我公司的某个人偶然发现了问题.有没有人对该产品有任何经验?任何输入都会有所帮助.基本上我们想要一个集中的地方来检查我们的日志以查找多个应用程序.需要至少支持.net和Java.其他产品将不胜感激.
谢谢
寻找一个linux文本编辑器.我可以通过emacs稍微摸索一下,但只是真正了解基础知识.我喜欢OSX上的TextMate,但有时觉得它有点弱(也许我只是没有学到它).我不知道emacs或vim是否值得,因为我仍然主要在eclipse中编程.
java ×2
sql ×2
aggregation ×1
annotations ×1
axis2 ×1
date ×1
eclipse ×1
generics ×1
java-5 ×1
linux ×1
logging ×1
oracle ×1
oracle10g ×1
soap ×1
text-editor ×1
tidy ×1
timestamp ×1
web-services ×1