[英]What does it mean to extend a static class in Java?
看一下web中的一些java示例代碼,我遇到了以下語法:
public class WordCount {
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//...
}
}
//...
}
來自C#背景,其中靜態類不能從另一個類繼承,我對Map
類之后的extends
關鍵字有點困惑。 擴展靜態類是什么意思,它提供了什么優勢?
靜態修飾符在應用於類時,意味着c#和java中有兩個非常不同的東西。 在c#中,類上的static修飾符強制使該類的所有成員都是靜態的 。 因此,在c#中:
但是,在java中,應用於類的靜態修飾符意味着該類是嵌套它的類的靜態成員 ,而不是它的成員必須是靜態的。 因此,在java中:
在Java中沒有靜態類(不像在C#中那樣)。 這是一個內部嵌套類,靜態屬性意味着它可以在沒有外部類的實例的情況下使用。
靜態嵌套類可以像這樣實例化:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
但是,需要創建與外部實例相關的非靜態內部類:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
從嵌套類的Java文檔中獲取的代碼。
在此上下文中,static表示Map類不需要實例化WordCount實例。
它與可繼承無關(盡管是最終的關鍵字)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.