Eclipse IDE在Jcombobox上显示错误,该错误表明JcomboBox不能被参数化,例如:如下所示的行
private final JComboBox<LaborHelper> labourname = new JComboBox<LaborHelper>();
Run Code Online (Sandbox Code Playgroud)
这里我的项目执行环境是javaSE1.6
您好我们可以在Java 7中同时使用资源和多重捕获吗?我试图使用它,它给出了编译错误.我可能错误地使用它.请指正.
try(GZIPInputStream gzip = new GZIPInputStream(new FileInputStream(f));
BufferedReader br = new BufferedReader(new InputStreamReader(gzip))
{
br.readLine();
}
catch (FileNotFoundException | IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
基本上我有两个比较器(Comparator1和Comparator2),实现略有不同.两者都应按行的名称长度的降序对列表进行排序.
Comparator2似乎不适用于java7/java8.Comparator1始终有效.两者都适用于java 1.6实现,或者如果我设置-Djava.util.Arrays.useLegacyMergeSort = true.如果Comparator2中存在问题,则java应该抛出IllegalArgumentException,但不会抛出异常.
这在java文档中声明为"java.util.Arrays.sort使用的排序算法和java.util.Collections.sort(间接)使用的排序算法已被替换.如果新的排序实现检测到Comparable,则会抛出IllegalArgumentException违反可比较合约"
这是JRE中的错误还是Comparator2有问题?
public class Main {
public static void main(String[] args) {
Row row1 = new Row("AAAA");
Row row2 = new Row("BBB");
Row row3 = new Row("CC");
Row row4 = new Row("D");
List<Row> list1 = new ArrayList<Row>();
list1.add(row2);
list1.add(row3);
list1.add(row1);
list1.add(row4);
System.out.println("Before sorting:");
System.out.println("");
print(list1);
Collections.sort(list1, new Comparator2());
System.out.println("After sorting with comparator2:");
System.out.println("");
print(list1);
Collections.sort(list1, new Comparator1());
System.out.println("After sorting with comparator1:");
System.out.println("");
print(list1);
}
private static void print(List<Row> list) {
for (Row row : list) …Run Code Online (Sandbox Code Playgroud) 在JavaScript中,可以编写一个这样的自执行函数:
(function foo() {
console.log("bar");
}());
Run Code Online (Sandbox Code Playgroud)
我希望用Java做到这一点.例如:
// This code does not work obviously
public static void main(String[] args) {
(foo() {
System.out.println("bar");
}());
}
Run Code Online (Sandbox Code Playgroud)
有这样的事吗?
今天我们谈到了Java 7在我们公司的优势.从Java 7开始,可以定义以下行
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
如
Map<String, List<String>> myMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
我们对上述主题进行了长时间的讨论.我们中的一些人认为这是类型推断(如varC#中的关键字),并且类型将在运行时计算,其他人认为它只是一种更简单的方式来声明某个变量并且没有推断,因为类型是已知的编译时的上下文.
请提供澄清.技术如何运作?
编辑:官方Oracle文档没有提供有关该文档的精确文档.http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html
有很多次我需要根据不同的字段对对象列表进行排序,最后我写了一个比较器,它使用反射来根据给定的方法或方法对列表进行排序.是否有一个框架已经实现了这样的东西?Java中是否存在已实现此功能的内容?(我在SO中搜索了java比较器框架,并提出了35次点击,似乎没有解决这个问题).
像这样的东西:
比较器根据给定的方法或方法进行比较:
package org.myframework.util.comparator;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SimpleComparator implements Comparator<Object> {
//
// instance variables
//
private ArrayList<Method> methods;
//
// constructors
//
public SimpleComparator() {
this.methods = new ArrayList<Method>();
}
//
// trivial getters and setters
//
public ArrayList<Method> getMethods() {
return methods;
}
public void setMethods(ArrayList<Method> methods) {
this.methods = methods;
}
//
// implementation of compare
//
@Override
public int compare(Object o1, Object o2) {
for (Method …Run Code Online (Sandbox Code Playgroud) 我使用的是Java 1.7,RestEasy和Jackson的codehaus版本(用于JSON解析)......
有一个标准的Java POJO DTO,它基于Windows 7文件系统填充目录路径(作为String):
import org.codehaus.jackson.annotate.JsonProperty;
public class BackupDirDTO implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("id")
private Long id;
@JsonProperty("backup-dir")
private String backupDir;
// Getters & Setters
}
Run Code Online (Sandbox Code Playgroud)
这是我的业务逻辑发生的层...它从数据库中获取实体的值并在DTO中设置属性:
public class DirectoryRepository {
public BackupDirDTO getDirectoryById(Long id) throws Exception {
DirectoryEntity entity = directoryRespository.getEntityById(id);
BackupDirDTO dto = new BackupDirDTO();
log.debug("Entity.getBackupDir: " + enity.getBackupDirectory());
dto.setBackupDir(entity.getBackupDirectory());
log.debug("dto.getBackupDirectory: " + dto.getBackupDir());
return dto;
}
}
Run Code Online (Sandbox Code Playgroud)
从我的log.debug()调用它看起来像这样(这是我想要的正确的字符串):
Entity.getBackupDir: "\\my-network-folder\backupDir"
dto.getBackupDirectory: \\my-network-folder\backupDir"
Run Code Online (Sandbox Code Playgroud)
这是RESTful Web服务调用:
public class DirectoryResource {
private …Run Code Online (Sandbox Code Playgroud) 这是我得到的堆栈跟踪
Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:777)
at java.util.TimSort.mergeAt(TimSort.java:514)
at java.util.TimSort.mergeCollapse(TimSort.java:441)
at java.util.TimSort.sort(TimSort.java:245)
at java.util.Arrays.sort(Arrays.java:1512)
at java.util.ArrayList.sort(ArrayList.java:1454)
at java.util.Collections.sort(Collections.java:175)
at xxx.sortDisplayFields(OfferFieldLayout.java:521)
Run Code Online (Sandbox Code Playgroud)
这是比较方法:
public int compare(Field pObject1, Field pObject2)
{
int compare = 0;
//...
if (compare == 0)
{
if (pObject1.hashCode() <= pObject2.hashCode())
{
compare = -1;
}
else
{
compare = 1;
}
}
return compare;
}
Run Code Online (Sandbox Code Playgroud)
我认为这是由于不尊重传递性而导致的:传递性:如果A> B和B> C,那么对于任何A,B和C:A>C。我试图提出一个反例,但我失败了在这里,任何帮助表示赞赏!
至于在例外情况下执行不同的逻辑.如下:
catch (IOException e | IllegalArgumentException a) {
e.doStuff();
a.doStuff();
}
Run Code Online (Sandbox Code Playgroud)