2012-02-13 14 views
7

मेरे पास एक इंटरफ़ेस है।जावा में इंटरफ़ेस का ऐरे

public interface Module { 
     void init(); 
     void actions(); 
} 

क्या होता है जब मैं इस तरह एक सरणी बनाने की कोशिश करता हूं?

Module[] instances = new Module[20] 

मैं इस सरणी को कैसे कार्यान्वित कर सकता हूं?

+4

यह समझ में नहीं आता है। आप इंटरफेस को तुरंत चालू नहीं कर सकते हैं। इसका उद्देश्य क्या होगा? तुम क्या करने की कोशिश कर रहे हो? – EboMike

+0

@user आप क्या हासिल करने की कोशिश कर रहे हैं? – Searock

+0

[आपने क्या प्रयास किया है] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – ironchefpython

उत्तर

23

हाँ, यह संभव है। आप प्रकार Module की वस्तुओं

instances[0] = new MyModule();

और MyModule के साथ सरणी के क्षेत्र भरने की जरूरत है एक वर्ग मॉड्यूल इंटरफ़ेस को लागू है। वैकल्पिक रूप से आप अनाम आंतरिक कक्षाओं का उपयोग कर सकते हैं:

instances[0] = new Module() { 
public void actions() {} 
public void init() {} 
}; 

क्या यह आपके प्रश्न का उत्तर देता है?

6

आपको उस वर्ग को लागू करने वाले वर्ग (एसएस) के उदाहरणों के साथ सरणी भरनी होगी।

Module[] instances = new Module[20]; 
for (int i = 0; i < 20; i++) 
{ 
    instances[i] = new myClassThatImplementsModule(); 
} 
4

आप एक ठोस वर्ग प्रकार है कि कि इंटरफ़ेस को लागू करने और अपने सरणी निर्माण

1

बेशक आप एक सरणी जिसका प्रकार एक अंतरफलक है बना सकते हैं कि का प्रयोग करेंगे बनाना होगा। आपको केवल उस इंटरफ़ेस के ठोस उदाहरणों के संदर्भों को संदर्भ में रखना होगा, या तो तत्वों का उपयोग करने से पहले, नाम या गुमनाम रूप से बनाया गया है। नीचे एक साधारण उदाहरण है जो सरणी ऑब्जेक्ट का हैश कोड प्रिंट करता है। यदि आप किसी भी तत्व का उपयोग करने का प्रयास करते हैं, तो मेरा ऐरे [0]। Method1() कहें, आपको एनपीई मिलती है।

public class Test { 
public static void main(String[] args) { 
    MyInterface[] myArray = new MyInterface[10]; 
    System.out.println(myArray); 
} 
public interface MyInterface { 
    void method1(); 
    void method2(); 
} 
} 
संबंधित मुद्दे