我已经向TreeSet添加了一些简单的对象,但是当我调用TreeSet的remove()和contains()方法时,它们不起作用.但是,当我遍历集合时,对象被打印出来.当对象唯一性基于对象名称属性时,应将Employee对象添加到集合中.Id属性是应该排序的值,但不是唯一的.
public class Employee {
private String name;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// Two objects are considered equal if their names are equal
@Override
public boolean equals(Object o) {
if (o == null)
return false;
if (this == o)
return true;
if (o.getClass() == this.getClass()) {
Employee p = …Run Code Online (Sandbox Code Playgroud) 是否有良好的shell编程习惯,只要有可能就使用只读变量,或者它有任何缺点吗?例如,如果我想编写一些包含多个使用不可变文件路径的脚本文件的脚本,那么声明这样的路径是否有意义:
readonly LOGS
export LOGS
LOGS="/some/path"
Run Code Online (Sandbox Code Playgroud)
另一个问题:将单片和冗长的读取shell脚本代码拆分成单独的文件是一个好主意吗?非常感谢你的回答.
通常需要根据另一个GUI对象的状态更改其他GUI对象的行为.例如,当按下按钮时,标签应更改其名称.但是,当我使用AbstractAction对象时,JButton myButton = new JButton(myButtonAction);我需要引用继承自AbstractAction的对象中的GUI对象.我应该只是在GUI中创建AbstractAction对象,然后将所有必要的GUI引用传递给AbstractAction对象,还是可以认为是坏样式?
为了使它更具体:
// AbstractAction
public class MyAction extends AbstractAction {
public MyAction(String name,
String description, Integer mnemonic, JLabel) {
super(name);
putValue(SHORT_DESCRIPTION, description);
putValue(MNEMONIC_KEY, mnemonic);
}
public void actionPerformed(ActionEvent e) {
// do something
}
}
}
public class GUI{
public Action myAction = null;
public GUI(){
JLabel label = new JLabel("text");
//This is not a good idea:
myAction = new MyAction("some text" , desc, new Integer(KeyEvent.VK_Q), label);
JButton myButton = new JButton(myAction);
}
}
Run Code Online (Sandbox Code Playgroud) 我想在一个单独的线程中执行不同的方法,具体取决于给构造函数的参数.但是,Callable接口只允许一种返回参数.
它应该像这样工作:
Future<String> result =
executor.submit(ClassThatImplementsCallable(RETURN_STRING));
Future<Integer> result =
executor.submit(ClassThatImplementsCallable(RETURN_INT));
ClassThatImplementsCallable(RETURN_NOTHING);
Run Code Online (Sandbox Code Playgroud)
要返回null(分别是对Void的引用)或任何其他类型(如String或Integer),我必须使用T,不带任何边界,如下所示:
public static class CallableTest<T> implements Callable<T>{
T value;
CallableTest(T value) {
this.value = value;
}
public T call(){
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不是我想要实现的,但是扩展Void并实现其他一些接口也没有意义.
昨天我偶然发现了Haxe NME项目,这是一个非常有前途的想法.但是,仍然无法使用此框架构建复杂的UI.在我看来,构建一个针对这么多不同平台的UI框架似乎是一项令人生畏的任务,因此我认为这不是一种可行的方法,因为即使像Qt和wxWidgets这样老旧成熟的UI框架也不支持很多平台.
但是,在一些漂亮的UI设计器工具的帮助下构建一个特定于平台的UI,然后将UI代码连接到用Haxe编写的UI不可知代码是有意义的.我不知道这是否可行,因为我找不到任何示例,但也许有人已经编写了一些MVC Haxe代码,可以成功连接到不同的平台特定UI,想分享他的经验.谢谢.