我在这里阅读了一个关于使用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:这个问题在我的脑海中更加混乱!
我的课程安排如下:
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写一个库,它以这种方式从文件名列表创建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我在上面的代码中使用的方法?
文献:
在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) 我的目标是使用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用作单例?
我正在尝试使用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)
该消息非常有用且不言自明!但是,你有解决这个问题的方法吗?
我有一个 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)
我的问题是:我应该对这些类进行单元测试吗?我应该测试什么?如何
当我在 IntelliJ 2017.3 中对 git 存储库上托管的 Java 项目进行重构时,
这些Java类变成红色(即未跟踪的文件)而不是绿色(跟踪和修改的文件)。如果我提交,我会丢失文件的整个历史记录,并且注释会报告我是第一个提交的人。
是我重构错误还是 IntelliJ 的错误?有什么方法可以正确移动文件吗?
我在使用泛型定义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应用程序中,我有一个类的方法,只使用其名称保存文件.
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方法删除它?