在学习Java教程时,Reflection和Late Binding让我很困惑.在一些教程中,他们写过它们都是相同的,并且Reflection和Late Binding之间没有任何区别.但其他教程表示存在差异.
我很困惑,所以有人可以解释一下Java中的Reflection和Late Binding是什么,如果可行的话,请给我一些真实世界的例子.
谢谢..
如果我有一个正则表达式,我该如何返回它找到的子字符串?我确定我必须遗漏一些明显的东西,但我发现了各种方法来确认我正在搜索的字符串中包含该子字符串,或者用其他东西替换它,但不能返回我发现的内容.
我有一类可以在类中保存的地图上执行的静态方法,我希望在调用类时设置地图.我尝试过使用私有的构造函数,但它没有被调用.我的代码的相关部分是:
public class MyClass
{
private static final String KEYS = "ABC";
private static final String[] DATA = {"AAA", "BBB", "CCC"};
private static HashMap<Character, String> myMap;
private MyClass() {
System.out.println("Running constructor");
populateMyMap();
}
private static void populateMyMap() {
myMap = new HashMap<Character, String>();
for (int i=0; i < KEYS.length; i++) {
myMap.put(KEYS.charAt(i), DATA[i]);
}
}
//various static methods
}
Run Code Online (Sandbox Code Playgroud)
私有构造函数是否适合在这里使用,如果是这样,我做错了什么?
对不起,如果这是重复的; 我试过寻找答案,但我不确定要搜索什么!
我怎样才能给出附在他们身上JMenuItem的名字ActionListener?
我有一个由单个处理的菜单系统,ActionListener这些菜单中的一些项目重复名称.这不是用户端的问题,因为它显然是做什么的; 事实上,如果他们有不同的名字会更加混乱.但是,在我的最后,我想要唯一地标记每个项目.
创建我的项目的部分如下所示:
String label = getLabel(forThisItem);
JMenuItem item = new JMenuItem(label);
item.setName(parentMenu.getName() + "_" + label);
item.addActionListener(actionListener);
parentmenu.add(item);
Run Code Online (Sandbox Code Playgroud)
使用getName()在事后(在此方法的范围之外)询问项目,给出我给它的名称,因为它应该,但输出
public void actionPerformed(ActionEvent ae) {
String actionPerformed = ae.getActionCommand();
System.out.println("actionPerformed: " + actionPerformed);
}
Run Code Online (Sandbox Code Playgroud)
是用户看到的,可能是重复的名称,由label我指定的名称,而不是我给它的唯一名称.
如何将正确的信息提供给ActionListener?