java的靜態方法是不能直接new內部類的
因為靜態方法可以被類名.方法名()直接呼叫,可以說是“單例“的,內部類可以訪問外部類成員變數,如果靜態方法中new了同一個內部類的多個物件,就會出現 類名.方法名(多個物件操作同一個外部類變數或者方法的情況,出現“多個副本“,與“單例”規則不符,會出現方法邏輯問題)
e.g public class Test { private int value;
class InnerClass{ public InnerClass(){ System.out.println(value); } } public Test(int value){ this.value = value; } public static void f(){ new InnerClass(); } public static void main(String[] args){ Test t1 = new Test(10); Test t2 = new Test(20); Test.f(); //value到底是多少? }
}
相關推薦
java的靜態方法是不能直接new內部類的
因為靜態方法可以被類名.方法名()直接呼叫,可以說是“單例“的,內部類可以訪問外部類成員變數,如果靜態方法中new了同一個內部類的多個物件,就會出現 類名.方法名(多個物件操作同一個外部類變數或者方法的情況,出現“多個副本“,與“單例”規則不符,會出現方法邏輯問
靜態方法中不可直接new內部類例項物件問題
結論:靜態方法中,是不可以直接new內部類例項物件和引用外部類的成員變數的。 原因:1、外部類中的成員變數、方法以及內部類其實三者都在同一個級別上,三者都必須由外部類的例項物件才能呼叫(舉例:當一個方法被呼叫時,此時肯定已經有了外部類的例項物件。),故而他們三者可以互相引用。 2、而靜
靜態方法調用內部類時候的new 問題
方法調用 解決 方法 img pack () pac com bubuko package tool; /** * 靜態方法調用內部類時候的new 問題 */ public class aa { // 靜態方法 // 靜態方法new 有問題
Java之靜態方法中的內部類
靜態方法中不能直接建立內部類,為什麼呢?在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。 靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法
靜態方法中使用內部類不能通過new
首先來看一下錯誤程式碼, public class TraditionalThreadSynchronized { public static void main(String[] arg
java類方法中使用內部類的引數問題
1.問題: public class Test{ private int a = 1; static int b = 2; public void method(){ final int c
靜態方法中不能new內部類的例項物件的總結
原文 class Test{ public void main(String[] args){ A testA=new A(); //這裡會出現問題 new Thread(new Runnable(){ public void run(){
java 靜態方法呼叫非靜態內部類報錯
Error: No enclosing instance of type *** is accessible. Must qualify the allocation with an enclosing instance of type *** (e.g. x.new A
Java多執行緒中注入Spring的Bean-使用靜態方法直接取的容器中的spring物件
目前認為比較好的解決方案。 1,工具類 public class SpringApplicationContextHolder implements ApplicationContextAware { private static ApplicationContext context
Java多型+構造方法+垃圾回收+內部類+Lambda+裝箱列舉註解
文章目錄 1 . 變數及其傳遞 1.1 基本型別變數與引用型變數 1.2 欄位變數與區域性變數 1.2 變數的傳遞 1.3變數的返回 不定長引數
new 介面{內部實現方法} 轉為 匿名內部類
一、內部類 1、內部類初識 一般,一個類裡主要包含類的方法和屬性,但在Java中還提出在類中繼續定義類(內部類)的概念。 內部類的定義:類的內部定義類 先來看一個例項 public class Out { private int a=1;
怎麼想靜態內部類可以有靜態成員和方法而成員內部類不行?
因為:(沒有理論依據,純粹是為了尋找一個思想依據) 1、成員內部類:在沒有產生外部類物件的情況下,內部類是不可能被訪問到的,即(外部類類名).(內部類類名)是不可能的,只能通過外部類的物件名來訪問!既然是屬於外部類物件的,那內部類屬性就不能提前部署在記憶體中啦,所以就不能有
工廠方法模板(java程式設計思想 使用匿名內部類)
package innerclasses; interface Service{ void method1(); void method2(); } interface ServiceFactory{ Service getService(); } class
Java靜態方法 與 非靜態方法(實例方法)的區別
外部類 允許 靜態成員 靜態 成員 訪問 靜態成員變量 ava 實例方法 靜態方法與實例方法的異同 1.在外部類 調用靜態方法時,有兩種方式:(1)類名.靜態方法()(2)類的對象.靜態方法() ;也就是說調用靜態方法時可以不用創建對象。 調用實例
Java - 靜態方法不具有多態性
多態性 pub public 機制 根據 都是 print java args class A1 { public static void f() { System.out.println("A1.f()"); }}class A2 extends A1 { public
Java反射之調用內部類
pre http code 引用 IE out col sin over 1. 反射調用默認訪問權限的內部類 package com.blueStarWei.invoke; import java.lang.reflect.Method; import com.blu
java靜態方法和實例方法的區別
區別 -s string chap 變量賦值 sta 方法 url cal 靜態方法(方法前冠以static)和實例方法(前面未冠以static)的區別 (視頻下載) (全部書籍) 調用靜態方法或說類方法時,可以使用類名做前綴,也可以使用某一個具體的對象名;通常使用
8、構造方法&匿名內部類&許可權
1、構造方法 概念及功能:用來建立例項物件的方法, 給物件的資料進行初始化 。Person p = new Person(); 呼叫構造方法 Person()只是我們沒有寫這個方法,而是Java自動補齊了這個方法,是方法就可以傳入引數。建立物件時,可以直接為成員變數賦值,無需再在物件產生
Thinking in java自讀筆記:內部類
首先推薦一篇內部類講解詳細的部落格地址:https://www.cnblogs.com/dolphin0520/p/3811445.html 一.內部類的四種類型 成員內部類 區域性內部類 匿名內部類 靜態內部類 (一)成員內部類是最普通的內部類,
【學習筆記】 唐大仕—Java程式設計 第5講 深入理解Java語言之5.5 內部類與匿名類
/** * 內部類與匿名類 * @author cnRicky * @date 2018.11.10 */ 內部類與匿名類 內部類(inner class)是在其他類中的類 匿名類(anonymous class)是一種特殊的內部類,它沒有類名 內部類(Inner class)