小编Jos*_*ies的帖子

一种在Java中初始化空String数组的优雅方法

在我正在处理的当前代码库中,我发现自己需要初始化许多不同长度的空String [].

截至目前,它们始终以下列方式初始化:

String[] a = new String[]{"","","","","","","","",""} // etc...
Run Code Online (Sandbox Code Playgroud)

虽然这是一个简单的单行解决方案,但我个人的偏好是它相当难看.

我只是想知道是否有人知道任何现有的API/Utility提供了一种方法,其中可以更优雅地初始化空字符串数组.我正在思考以下问题:

StringUtils.*initialiseEmptyArray*(int size);
Run Code Online (Sandbox Code Playgroud)

有谁知道任何这样的方法?

如果需要的话,我总是可以写自己的,如果它已经完成,就不想重新发明轮子.

谢谢

java arrays string

25
推荐指数
2
解决办法
3万
查看次数

REST API方法的组合键

我正在寻找以下用例的RESTful API设计的最佳实践:

域对象工具:

class Vehicle {
    private String vehicleType;
    private String colour;
    private String transmission;
    private String yearOfIssue;
}
Run Code Online (Sandbox Code Playgroud)

一个示例对象:

Vehicle = {vehicleType : 'Car', colour : 'Red', transmission : 'Automatic', yearOfIssue : '2008'};
Run Code Online (Sandbox Code Playgroud)

在此域模型中,没有单个字段唯一标识符(例如vehicleId),而是对象的所有字段一起形成主键(此约束存在于数据库层中).

我们无法灵活地更改此域模型以添加单个字段唯一标识符.

所以我的问题如下 - 如果我想在这个域对象之上添加一个简单的REST API,为CREATE,UPDATE,DELETE和GET Vehicle提供简单的功能,这些方法的PATH端点的最佳实践是什么?

按照上面的例子,如果域模型具有单个字段唯一标识符vehicleId,那么我可以想象以下端点:

GET /vehicles/:vehicleId
PUT /vehicles/:vehicleId
DELETE /vehicles/:vehicleId
Run Code Online (Sandbox Code Playgroud)

我不知道复合键存在的类似于此的模式:

GET /vehicles/:vehicleTypecolourtransmissionyearOfIssue
GET /vehicles/CarRedAutomatic2008
Run Code Online (Sandbox Code Playgroud)

似乎不正确.

关于此用例的良好模式的任何建议将不胜感激.

谢谢

api rest

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

是否可以使用Mockito抛出抽象异常?

我有一个用例,我试图确保在我的类中调用特定方法时抛出一个抽象异常.

我使用Mockito来做这件事,但是注意到Mockito在调用方法时根本不会抛出异常.

要测试的类:

public void doSomething() throws CustomException {
  try {
    Collection<T> results = dao.getDatabaseResults();
      } catch (ProblemException e) {
          throw new CustomException("There was an exception", e);
  }
}
Run Code Online (Sandbox Code Playgroud)

问题异常类:

public abstract class ProblemException extends RuntimeException {

  public ProblemException(String message) {
      super(message);
  }

  public ProblemException(String message, Throwable e) {
      super(message, e);
  }
Run Code Online (Sandbox Code Playgroud)

测试类:

public testDoSomething() throws Exception {
   CustomDAO mockDAO = Mockito.mock(CustomDAO.class);

   Mockito.when(mockDAO.getDatabaseResults()).thenThrow(new ProblemException);

   try {
       foo.doSomething();
       Assert.fail();
   } catch (CustomException e) {
      //Some more asserts
   }
Run Code Online (Sandbox Code Playgroud)

目前,上述测试类将无法编译,因为您无法创建抽象类的新实例.

我没有更改AbstractException类的权限,也无法更改DAO类上的getDatabaseResults()方法抛出的异常类型.

对于这个问题,您对最干净的解决方案有什么建议吗? …

java unit-testing exception abstract mockito

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

标签 统计

java ×2

abstract ×1

api ×1

arrays ×1

exception ×1

mockito ×1

rest ×1

string ×1

unit-testing ×1