小编mat*_*boy的帖子

来自Guava或Java枚举的ImmutableSet

在这里阅读一个关于使用ImmutableSetGuava 的好例子.为了完整起见,此处报告了此示例:

public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of(
  "red",
  "orange",
  "yellow",
  "green",
  "blue",
  "purple");

class Foo {
  Set<Bar> bars;
  Foo(Set<Bar> bars) {
    this.bars = ImmutableSet.copyOf(bars); // defensive copy!
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,我可以通过使用Java枚举获得相同的结果吗?

PS:这个问题在我的脑海中更加混乱!

java enums guava

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

Java ExecutorService:我应该先使用lock来使用execute吗?

我的课程安排如下:

public class MyClass {

   ExecutorService pool;

   public MyClass(){
     pool = ... //inited by a class that implements ExecutorService
   }

   public final void submit(Runnable run){
        pool.execute(run);
   }
}
Run Code Online (Sandbox Code Playgroud)

方法submit线程是安全的还是应该使用Lock基于系统的?例如

   ReentrantLock look  = new ReentrantLock();

   public final void submit(Runnable run){
        lock.lock();
        try{ pool.execute(run); } finally{lock.unlock();}
   }
Run Code Online (Sandbox Code Playgroud)

java multithreading thread-safety

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

标准化字符串以在Java中创建安全的URL

我正在用Java写一个库,它以这种方式从文件名列表创建URL:

final String domain = "http://www.example.com/";

String filenames[] = {"Normal text","Ich weiß nicht", "L'ho inserito tra i princìpi"};

System.out.println(domain+normalize(filenames[0]);
//Prints  "http://www.example.com/Normal_text"
System.out.println(domain+normalize(filenames[1]);
//Prints  "http://www.example.com/Ich_weib_nicht"
System.out.println(domain+normalize(filenames[2]);
//Prints  "http://www.example.com/L_ho_inserito_tra_i_principi"
Run Code Online (Sandbox Code Playgroud)

是否存在某个Java库,该库公开了normalize我在上面的代码中使用的方法?

文献:

java string url normalization

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

使用NetBeans无法在Maven项目中为@author值生成JavaDoc

在NetBeans中,我在尝试为Maven项目生成JavaDoc时遇到以下错误.

Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:javadoc 
(default-cli) on project Heur: An error has occurred in JavaDocs report generation:
Exit code: 1 - C:\Users\Admin\JavaProjects\Heur\src\main\java\com\heur\App.java:27: 
error: malformed HTML
* @author MyName <myemail @ gmail.com>
Run Code Online (Sandbox Code Playgroud)

我不明白错误,据我所知,@author标签是正确的.这里报告完整性:

/**
 *
 * @author MyName <myemail @ gmail.com>
 * @version 1.0.0
 * @since 4-apr-2014
 */
Run Code Online (Sandbox Code Playgroud)

java netbeans javadoc maven

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

在java中定义单例以用于资源尝试

我的目标是使用try-with-resource构造和一个类的单个实例,即一个处理连接池的单例.我需要这个以确保连接池在一切结束时关闭,然后我想使用try-with-resource.例如

public class MyHandler implements java.io.Closeable{

   public static ConnectionPool pool;

   //Init the connection pool
   public MyHandler(){
      pool = ...;
   }

    @Override
    public void close() {
        pool().close();    
    }
}
Run Code Online (Sandbox Code Playgroud)

可能的地方main是:

public static void main(String [] args){
  try(MyHandler h = new MyHandler){
     //execute my code
     // somewhere I do MyHandler.pool.something();
  }
}
Run Code Online (Sandbox Code Playgroud)

如何确保将MyHandler用作单例?

java singleton try-catch

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

在Apache Jena中导入rdf/xml:小写首选异常

我正在尝试使用Apache Jena中的以下代码导入RDF/XML文件:

Path input = Paths.get("C:\Users\Admin\Documents");
Model model = ModelFactory.createDefaultModel() ; 
model.read(input+File.separator+"foaf.rdf", "RDF/XML") ;
Run Code Online (Sandbox Code Playgroud)

正在导入的文件在这里.

当我运行测试代码时,返回以下异常:

Exception in thread "main" org.apache.jena.riot.RiotException: <C:\Users\Admin\Documents\foaf.rdf> 
  Code: 11/LOWERCASE_PREFERRED in SCHEME: 
    lowercase is preferred in this component
Run Code Online (Sandbox Code Playgroud)

该消息非常有用且不言自明!但是,你有解决这个问题的方法吗?

java rdf jena

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

JPA 实体必须进行单元测试,如何进行?

我有一个 Spring MVC 应用程序(Spring Boot v. 1.2.5),它使用 JPA 与流行的 Sql 数据库进行交互。
因此,我有几个实体映射了数据库中的所有表。显然,这些类只有 getter/setter 和实体之间关系的注释。

例如:

@Entity
@Table
public class Article {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonView(View.Private.class)
    private Long id;

    @Column(nullable = false)
    @JsonView(View.Public.class)
    private String name;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "categoryId", nullable = false, updatable = false)
    @JsonIgnore
    private Category category;

   //Constructors Getters and Setters
   ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:我应该对这些类进行单元测试吗?我应该测试什么?如何

java spring unit-testing hibernate jpa

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

移动到新包后,IntelliJ 将 GIT 存储库的文件标记为未跟踪

当我在 IntelliJ 2017.3 中对 git 存储库上托管的 Java 项目进行重构时,

  1. 创建一个新包
  2. 按照IntelliJ 配方将现有的跟踪和提交的 Java 类移动到新包中

这些Java类变成红色(即未跟踪的文件)而不是绿色(跟踪和修改的文件)。如果我提交,我会丢失文件的整个历史记录,并且注释会报告我是第一个提交的人。

是我重构错误还是 IntelliJ 的错误?有什么方法可以正确移动文件吗?

java git intellij-idea

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

Java5中的方法公司具有通用内部另一个通用

我在使用泛型定义Java5方法时遇到了一些问题.

我试验过我可以定义一个方法如下:

public <R extends Runnable & MyInterface, T> void submit(R runnable, T task);
Run Code Online (Sandbox Code Playgroud)

因此,submit只接受R实现接口Runnable和类的对象的实例MyInterface.现在,假设我想做以下事情:

public <C extends Callable & MyInterface, T> submit(C<T> callable);
Run Code Online (Sandbox Code Playgroud)

其中C是一个Callable也实现MyInterface并具有类型返回值的T.在这种情况下,IDE会在方法公司中报告错误:

required: class
found: type parameter C
where C,T are type-variables
Run Code Online (Sandbox Code Playgroud)

定义第二种submit方法的正确方法是什么?

PS:我不知道标题是否是最好的.一旦确定问题类型,请随时改进标题!

java generics methods java-5

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

使用Junit进行单元测试中保存文件的路径

在Java应用程序中,我有一个类的方法,只使用其名称保存文件.

public void doSomething(){
    final File file = new File("XXX"+(new Random().next())+".txt");
    file.createNewFile();
}
Run Code Online (Sandbox Code Playgroud)

然后,在使用JUnit 4的单元测试中,我运行执行该方法的类,并XXX.txt在项目的根文件夹中看到使用name创建的文件.

@Test
public void doSomethingTest() throws Exception{
  //call doSomething();
  Path path = //to project folder
  Files.delete(path);
}
Run Code Online (Sandbox Code Playgroud)

如何动态获取此路径,以便我可以使用@After方法删除它?

java junit unit-testing file

0
推荐指数
1
解决办法
4885
查看次数