我有一个名为“模块”的课程
public abstract class Module {
protected Map<String, Port> ports;
...
public Map<String, Port> getPorts() {
return ports;
}
}
Run Code Online (Sandbox Code Playgroud)
和一个名为 Design 的类,它是 Module 的子类
public class Design extends Module{
...
//want to do this but doesn't compile
@override
public Map<String, Port> getPorts() {
return (Map<String, TopPort>) ports; //TopPort is a subclass of Port
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我想要做的只是将 TopPorts 添加到 Design 并在从 getPorts() 函数返回时已经转换类型。
我现在正在做的是在 getPorts 函数在 main 中返回后将 Ports 转换为 TopPorts,但这非常糟糕,在我的代码上构建的人将无法立即理解何时返回 TopPort。
我还尝试创建另一个函数而不是覆盖 getPorts()
//want to do this as well …
Run Code Online (Sandbox Code Playgroud) 我正在使用JSPlumb连接一堆块,我可以使用以下方法为连接设置标签:
JSPLUMB_INSTANCE.bind("connection", function (info) {
info.connection.getOverlay("label").setLabel("w="+width+"<br>p="+pipelining);
});
Run Code Online (Sandbox Code Playgroud)
这样,标签始终在连接上可见.有没有办法让标签只出现在鼠标悬停上?
在Java中将私有方法声明为"final"是否有优势?
如果我的理解是正确的,"最终"修饰符确保我不能覆盖子类中的方法,因此这可以使该方法在运行时更有效.一些文献说,如果它是最终的,可以内联,例如可以使方法调用更快.此外,如果声明为final,则Java运行库不必在继承层次结构中查找其他方法.
但是,私有函数不能被覆盖,所以它们也暗含"最终"吗?以下两个声明之间是否有区别:
private void myFun()
Run Code Online (Sandbox Code Playgroud)
和
private final void myFun();
Run Code Online (Sandbox Code Playgroud)