我一直在开发java程序一年半.我目前正在开展夏季项目,涉及相当大的图形用户界面.
我的GUI由几个选项卡式窗格组成.每个窗格都有自己的类.每个窗格都有几个jButtons.
现在,我已经到了一个点,在我的选项卡式窗格类中有很多匿名内部类(对于ActionListeners),我确信必须有更好的方法; 如果不是为了效率,那么为了可维护性 - 它变得非常混乱.
我的问题是:当你在每个班级中有很多听众时,是否有更好的组织听众?我已经考虑过在相关类中集中监听器 - 如下面的示例代码:
public class SomeListeners implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
String command = e.getActionCommand();
switch(command){
case "This button":
doThis();
break;
case "That button":
doThat();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者可能有更好的方法?
提前致谢 :)
我正在开发一个GUI程序,我在其中创建了类,通过功能集群ActionListeners.我的问题是关于JVM如何处理jButton,它们添加了相同的ActionListener.
第一; 我知道JVM可以通过让指向相同字符串(例如)的两个引用变量指向内存中的相同字符串对象来节省内存.
public class Example {
String str1 = "SomeString";
String str2 = "SomeString";
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:如果我有5个jButton.所有按钮都添加了相同的ActionListener.当程序运行时,它们是否会添加5个单独的,相同的,同一类的实例?或者JVM会做类似的事情(对于上面提到的)?
我开发了一个大规模的GUI程序,我有很多需要存储locally在命令中的项目数据.
目前,我将所有全局数据结构保存在保存类(项目)中,然后将它们序列化为本地硬盘文件:
public void saveChanges() {
ArrayList<Student> studentList = new ArrayList<>();
ArrayList<String> coursesList = new ArrayList<>();
ArrayList<Requirement> reqList = new ArrayList<>();
ArrayList<Risk> riskList = new ArrayList<>();
for (int x = 0; x < dlm.getSize(); x++) {
studentList.add(dlm.elementAt(x));
}
for (int x = 0; x < dlm2.getSize(); x++) {
coursesList.add(dlm2.elementAt(x));
}
for (int x = 0; x < dlm3.getSize(); x++) {
reqList.add(dlm3.elementAt(x));
}
for (int x = 0; x < riskTable.getRowCount(); x++) {
riskList.add((Risk) riskMap.get(dtm1.getValueAt(x, 0)));
}
project.setStudentAL(studentList);
project.setCoursesAL(coursesList); …Run Code Online (Sandbox Code Playgroud) 在python中,list数据结构是一系列元素.类似地,a tuple也是一系列元素,然而,元组是immutable.
是什么原因产生了这样一个类似的数据结构,那就是只有功能,而不是列表,它是不能改变的?它是否可以通过不可变来节省内存空间?
此外,如果列表和元组包含完全相同的数据,它们是否会在内存中使用相同的空间量?
我目前正在开发一个程序,我用它TreeSet来存储唯一的密钥.我正在使用TreeSet,因为我希望它们排序.
截至目前,我一直在制作一个TreeSet对象,并在需要时一次一个地添加字符串.
TreeSet set = new TreeSet();
set.add("How");
set.add("Are");
set.add("You");
Run Code Online (Sandbox Code Playgroud)
据推测,TreeSet使用中的compareTo方法Compareable interface对字符串进行排序.这意味着每次向其添加String时,TreeSet都必须进行排序.
现在我的问题是:创建一个HashSet然后创建TreeSet后面all strings的HashSet 会更有效吗?
TreeSet<String> treeSet = new TreeSet<String>(set);
Run Code Online (Sandbox Code Playgroud)
我的想法是关于TreeSet是否只需要以这种方式进行单一排序.
提前致谢
我一直想知道为什么允许在接口中执行代码实现,当接口被假定为不包含代码实现时:
public interface someInterface{
String someString = "example";
}
Run Code Online (Sandbox Code Playgroud)
我可以使类实现此接口,而不会出现错误:
public class someClass implements someInterface
Run Code Online (Sandbox Code Playgroud)
怎么会?