我不是在问这里已经问过的问题: @PathParam和@QueryParam之间有什么区别
这是"最佳实践"或惯例问题.
当你使用@PathParam
VS @QueryParam
.
我能想到的是,决定可能是使用二者来区分信息模式.让我在下面说明我的LTPO - 不完美的观察.
PathParam的使用可以保留用于信息类别,这可以很好地落入信息树的分支中.PathParam可用于深入到实体类层次结构.
而QueryParam可以保留用于指定属性以定位类的实例.
例如,
/Vehicle/Car?registration=123
/House/Colonial?region=newengland
/category?instance
@GET
@Path("/employee/{dept}")
Patient getEmployee(@PathParam("dept")Long dept, @QueryParam("id")Long id) ;
Run Code Online (Sandbox Code Playgroud)
VS /category/instance
@GET
@Path("/employee/{dept}/{id}")
Patient getEmployee(@PathParam("dept")Long dept, @PathParam("id")Long id) ;
Run Code Online (Sandbox Code Playgroud)
VS ?category+instance
@GET
@Path("/employee")
Patient getEmployee(@QueryParam("dept")Long dept, @QueryParam("id")Long id) ;
Run Code Online (Sandbox Code Playgroud)
我不认为有这样做的标准惯例.在那儿?但是,我想知道人们如何使用PathParam与QueryParam来区分他们的信息,就像上面举例说明的那样.我也很想听听练习背后的原因.
我正在查找标准库(如apache commons,jax,jboss,javax)中的接口或枚举列出所有标准mime类型(aka内容类型)的值.
这个接口不应该与其他类太深,以至于难以将整个串包含为gwt源代码.
例如
interface ContentType{
String JSON = "Application/JSON";
blah ... blah ...
}
Run Code Online (Sandbox Code Playgroud)
要么,
enum ContentType{
JSON("Application/JSON"),
blah ... blah ...
}
Run Code Online (Sandbox Code Playgroud) javax.inject注释是否可以作为com.google.inject的直接替换?
所以,如果我用javax.inject替换所有我当前的guice/gin注释,我的应用程序将编译并运行得很好?
首先,javax.inject是否覆盖了google.inject所涵盖的所有基础?
有人设置maven存储库和/或ip流的伪装以提供原始的伪装库副本但注入恶意或有害代码的风险和可能性或场景是什么.
防止此类风险和可能性的步骤和做法是什么?
对于以下jax-b注释,Jackson json注释中的等价方式是什么?
我需要生成json而不是xml,并且需要知道在jax-b中等效表示的传统jackson注释.
如果json/xml元素名称是一个java保留字,如" new
"," public
"," static
"等,这些功能尤其重要.
因此,我们必须将POJO字段分别命名为"_new_","_ public _","_ static_"等,
但是使用jax-b注释将它们重命名为生成的XML(和json)元素中的"new","public","static"等.
重命名字段
@XmlAccessorType(XmlAccessType.FIELD)
public class Person{
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected String address;
@XmlElement(name = "contractor")
protected boolean _restricted_ ;
@XmlElement(name = "new")
protected boolean _new_ ;
}
Run Code Online (Sandbox Code Playgroud)
重定向到使用属性getter(我认为这是在jax-b中完成的方式)
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Person{
protected String name;
protected String address;
protected boolean _restricted_ ;
protected boolean _new_ ;
@XmlElement(required = true)
protected String getName() {return name;}
@XmlElement(required = true) …
Run Code Online (Sandbox Code Playgroud) 假设我打开了20个课程,我正在调试应用程序.
我通过它的断点来调试调试器.在某一行,我分心并开始滚动当前的源(类似于2000行).然后我开始涉猎其他19个源文件.
在涉水十分钟后,我希望返回当前的调试行.我甚至忘记了它是什么课.什么是最好的方法?这是我最糟糕的做法:
以上所有都不是好习惯.如果我没有错,当我使用Visual Studio编写C#时,我们有一个按钮让我们回到当前的调试行.
Eclipse中有这样的按钮吗?为什么不?如果没有,有人插件去做吗?
你有其他方便的做法吗?一个插件会很棒.
这两个内部类声明有什么区别?还评论优点/缺点?
案例A:类中的类.
public class Levels {
static public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
Run Code Online (Sandbox Code Playgroud)
和案例B:接口内的类.
public interface Levels{
public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
Run Code Online (Sandbox Code Playgroud)
纠正:放置getvalue方法.
进一步的信息:我能够在另一个没有实现接口AT ALL的类中实例化A和B两种情况下的Items类.
public class Z{//NOTE: NO INTERFACE IMPLEMENTED here!!!!
Levels.Items items = new Levels.Items();
}
Run Code Online (Sandbox Code Playgroud)
由于接口未实例化,因此接口内的所有元素都可以通过点符号访问,而无需实例化LEVELS接口,因为您无法实例化接口 - 有效地在可渗透静态引用的接口内定义类.
所以说B案例中的Items类不是静态的没有意义.由于情况A和B都以相同的方式实例化,我不是在寻找静态或内部或嵌套的语义.停止给我关于语义的答案.我想要编译器,运行时和行为差异/优点,或者如果没有,那么就这么说.没有更多的语义答案请!!!!! JVM或.NET VM规范的专家请求这个答案问题,而不是教科书语义学.
我意识到这更多的是语义任务而不是功能任务.
我有三种类型的编译范围依赖项:
仅编译范围,不在运行时使用.GWT客户端开发,MVP4G,RestyGWT,源保留注释处理器.我使用REST,所以我不需要GWT服务器端.
提供 - 编译所需的Hibernate jar,但由JBoss提供.
编译+运行时jar.
对于案例2,我们可以使用提供的范围.情况3,我们将使用编译范围.
但是对于案例1,我使用提供的范围,即使JBoss根本不提供这些文件.在运行时也不需要它们.
无论如何,你不认为Maven应该为一个范围提供"提供"的同义词,除非在编译时,不需要人工制品吗?或许,是否应该有"仅编译"范围?
例如,JDK 7能够切换(String)而不仅仅是switch(Number/Enum).
如果我写了一个在其代码中有switch(String)的GWT客户端,会有任何问题吗?
switch(String)是我能想到的问题之一.是否存在switch(String)之外的兼容性问题?
实际上,问题应该是
Creating an array of generic anything.
Run Code Online (Sandbox Code Playgroud)
为什么编译器不能处理它呢?
以下内容将被标记为错误 - 无法创建通用数组.
List<MyDTO>[] dtoLists = {new ArrayList<MyDTO>(), anExistingDtoList};
Run Code Online (Sandbox Code Playgroud)
要克服这一点,我需要
List<MyDTO>[] dtoLists = (List<MyDTO>[])Array.newInstance(ArrayList.class, 2);
dtoLists[0] = new ArrayList<MyDTO>();
dtoLists[1] = anExistingDtoList;
Run Code Online (Sandbox Code Playgroud)
那么,为什么编译器不能将第一种情况转换为第二种情况呢?
我确实认识到泛型是编译时确定的而不是运行时确定的,而数组是运行时确定的,因此需要确定类型才能创建数组.
编译器设计人员会遇到哪些技术/逻辑障碍会妨碍他们实现这一目标?
这个问题纯粹是哲学上的,关于语言正交性吗?如果是这样,这种行为将如何违反语言正交性?
这是一个复杂性的问题吗?解释复杂性.
我希望我的问题的答案能让我更好地了解java编译器在涉及泛型时的行为.
旁注:来吧,停止触发快乐.答案通用列表数组 不回答我的问题.为什么编译器不能自发地执行转换?
java ×10
gwt ×3
maven ×2
annotations ×1
content-type ×1
debugging ×1
eclipse ×1
generics ×1
guava ×1
guice ×1
gwt-gin ×1
jackson ×1
java-7 ×1
jax-rs ×1
json ×1
mime-types ×1
nested-class ×1
rest ×1
security ×1
semantics ×1
static-class ×1
xml ×1