小编Ble*_*eek的帖子

何时使用@QueryParam vs @PathParam

我不是在问这里已经问过的问题: @PathParam和@QueryParam之间有什么区别

这是"最佳实践"或惯例问题.

当你使用@PathParamVS @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来区分他们的信息,就像上面举例说明的那样.我也很想听听练习背后的原因.

java rest jax-rs

257
推荐指数
8
解决办法
34万
查看次数

接口/枚举列出标准的mime类型常量

我正在查找标准库(如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)

java gwt content-type guava mime-types

110
推荐指数
6
解决办法
8万
查看次数

用javax.inject替换com.google.inject

javax.inject注释是否可以作为com.google.inject的直接替换?

所以,如果我用javax.inject替换所有我当前的guice/gin注释,我的应用程序将编译并运行得很好?

首先,javax.inject是否覆盖了google.inject所涵盖的所有基础?

java gwt gwt-gin dependency-injection guice

47
推荐指数
3
解决办法
1万
查看次数

使用Maven有多安全?

有人设置maven存储库和/或ip流的伪装以提供原始的伪装库副本但注入恶意或有害代码的风险和可能性或场景是什么.

防止此类风险和可能性的步骤和做法是什么?

java security maven

40
推荐指数
2
解决办法
7885
查看次数

如何将JSON字段名称映射到不同的对象字段名称?

对于以下jax-b注释,Jackson json注释中的等价方式是什么?

我需要生成json而不是xml,并且需要知道在jax-b中等效表示的传统jackson注释.

  1. 重命名一个字段.
  2. 使用getter而不是字段.

如果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)

java xml json annotations jackson

37
推荐指数
2
解决办法
6万
查看次数

Eclipse调试视图当前行

假设我打开了20个课程,我正在调试应用程序.

我通过它的断点来调试调试器.在某一行,我分心并开始滚动当前的源(类似于2000行).然后我开始涉猎其他19个源文件.

在涉水十分钟后,我希望返回当前的调试行.我甚至忘记了它是什么课.什么是最好的方法?这是我最糟糕的做法:

  • 单击步骤进入图标,然后退出
  • 点击这一步,希望我不会错过任何重要的事情.
  • 在长堆调试跟踪中搜索突出显示的行.摆弄以将显示更改为高对比度,然后在找到线时将其更改回来.

以上所有都不是好习惯.如果我没有错,当我使用Visual Studio编写C#时,我们有一个按钮让我们回到当前的调试行.

Eclipse中有这样的按钮吗?为什么不?如果没有,有人插件去做吗?

你有其他方便的做法吗?一个插件会很棒.

java eclipse debugging

29
推荐指数
2
解决办法
7561
查看次数

接口与类中的内部类

这两个内部类声明有什么区别?还评论优点/缺点?

案例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规范的专家请求这个答案问题,而不是教科书语义学.

java nested-class inner-classes static-class

28
推荐指数
4
解决办法
4万
查看次数

是否存在依赖工件的Maven"仅编译器"范围

我意识到这更多的是语义任务而不是功能任务.

我有三种类型的编译范围依赖项:

  1. 仅编译范围,不在运行时使用.GWT客户端开发,MVP4G,RestyGWT,源保留注释处理器.我使用REST,所以我不需要GWT服务器端.

  2. 提供 - 编译所需的Hibernate jar,但由JBoss提供.

  3. 编译+运行时jar.

对于案例2,我们可以使用提供的范围.情况3,我们将使用编译范围.

但是对于案例1,我使用提供的范围,即使JBoss根本不提供这些文件.在运行时也不需要它们.

无论如何,你不认为Maven应该为一个范围提供"提供"的同义词,除非在编译时,不需要人工制品吗?或许,是否应该有"仅编译"范围?

java maven semantics

24
推荐指数
2
解决办法
1万
查看次数

GWT与JDK 7新功能的兼容性

例如,JDK 7能够切换(String)而不仅仅是switch(Number/Enum).

如果我写了一个在其代码中有switch(String)的GWT客户端,会有任何问题吗?

switch(String)是我能想到的问题之一.是否存在switch(String)之外的兼容性问题?

java gwt java-7

21
推荐指数
2
解决办法
9601
查看次数

创建泛型集合数组

实际上,问题应该是

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 compiler-construction generics

20
推荐指数
1
解决办法
4285
查看次数