在可能的副本上:
此线程不是在询问如何扩展最终
类。它问为什么一个声明为final
的类可能会扩展另一个类。
从该线程:
<code>final</code>类只是一个不能扩展的类。
但是,我有一个帮助程序类,我声明它是最终的
,并扩展
了另一个类:
public final class PDFGenerator extends PdfPageEventHelper {
private static Font font;
private PDFGenerator() {
// prevent instantiation
}
static {
try {
BaseFont baseFont = BaseFont.createFont(
"/Trebuchet MS.ttf",
BaseFont.WINANSI,
BaseFont.EMBEDDED
);
font = new Font(baseFont, 9);
} catch(DocumentException de) {
de.printStackTrace();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
public static ByteArrayOutputStream generatePDF() throws DocumentException {
Document doc = new Document();
ByteArrayOutputStream baosPDF = new ByteArrayOutputStream();
PdfWriter pdfWriter = PdfWriter.getInstance(doc, baosPDF);
try {
// create pdf
} catch(DocumentException de) {
baosPDF.reset();
throw de;
} finally {
if(doc != null) {
doc.close();
}
if(pdfWriter != null) {
pdfWriter.close();
}
}
return baosPDF;
}
}
Eclipse没有检测到任何错误。我已经测试了这个类,并且PDF是成功生成的,没有错误。
为什么我能够延长
期末
课程,而理论上我不应该延长?
(如果重要的话,我正在使用Java7。)
在我看来,PdfPageEventHelper
不是最终的
(这个javadoc证实了这一点),所以你可以扩展它,但你仍然不能扩展
这个新的类PDFGenerator
。
不过,您可以尝试这样做:
private Object abacaba = new PDFGenerator() {
};
然后你会得到编译错误:
BlahBlah.java:n:错误:无法从最终PDFGenerator继承
< code>PDFGenerator无法扩展,因为它被标记为final。您正在扩展未标记为final的< code>PdfPageEventHelper。
标记为< code>final的< code >类可以扩展另一个< code >类,但是< code>final类不能扩展。
这里有一个例子:
这是允许的
public class Animal {
}
public final class Cat extends Animal {
}
这是不允许的
public final class Animal {
}
public class Cat extends Animal {
}
问题内容: 这实际上是我现在面临的问题。我有一个类,可以说该类定义了一个返回实例的方法。该类在内部定义并声明。我想要做的就是定义一个类扩展,但我也想对与加入我自己的功能(方法,属性等)。我也想回来。 问题是最终的。这是我想做的事的例证: 我想做的是: 我该如何实现? [编辑]我正在向我的问题添加更多详细信息。我实际上是在为Jenkins开发一个插件,经过搜索,我意识到有一个插件提供了我想做的基本功
问题内容: 在Java中,我们不能覆盖final方法,但是有可能重载吗? 问题答案: 是的,重载最终方法是完全合法的。 例如:
我现在正在学习,我被赋予了一个简单的(我以为是这样的)任务。我必须让这段代码工作(我不能修改它): 我认为MousePressListener应该是FunctionalInterface,但它不能扩展MouseListener。有没有办法解决这个问题,或者我是从坏的方面来处理它?
我也需要扩展WebMvcConfigurationSupport类,修改两个内容: 我喜欢从WebMvcAutoConfiguration类注册的默认值,但是由于类上的条件注释,当我扩展WebMvcConfigurationSupport类时,它会防止自动配置的发生。 提前道谢!
问题内容: 是否可以使用Java 而非 JavaScript 构建Chrome扩展程序?(我在Eclipse IDE中使用Java SE。) 问题答案: Chrome扩展程序必须运行JavaScript。但是,您可以使用Google Web Toolkit 将Java编译为JavaScript。
我用的是java 1.8。我开始知道WToolkit是java 1.8的最终版本。但是我需要扩展这个类。你能告诉我扩展这个类的方法吗?我看了javaagent机制相关的文章。如果有人知道代理机制,请解释。