मैं तीन जावा प्रकार है enum पर प्रतीक नहीं मिल सकता है जैसे कि नीचे परिभाषित:javac शिकायत: लागू करने इंटरफेस
Main.java:
import java.util.Arrays;
import java.util.List;
public class Main
{
private Object callFunction()
{
OperationDefinitions func = OperationDefinitions.CONCATENATE;
List<Object> values = Arrays.asList(new Object[] {"ABC", "-", "DEF"});
return func.call (values);
}
public static void main (String[] args)
{
Main main = new Main();
System.out.println (main.callFunction());
}
}
Operation.java
import java.util.List;
public interface Operation
{
abstract Object call(List<Object> params);
}
OperationDefinitions.java
import java.util.List;
enum OperationDefinitions implements Operation
{
CONCATENATE() {
public Object call(List<Object> params)
{
StringBuilder builder = new StringBuilder();
for (Object param : params) builder.append((String)param);
return builder.toString();
}
},
;
}
(यह लगभग जावा 2 एड में दिया गया बिल्कुल सही उदाहरण है। मद 30) कोड ऊपर संकलित करता है तथा ग्रहण में ठीक चलाता है, लेकिन सूर्य javac के साथ मैं निम्नलिखित त्रुटि मिलती है: यदि मैं return ((Operation)func).call(values)
को return func.call(values);
से Main.java की लाइन 12 बदल यह ठीक संकलित
Main.java:12: cannot find symbol
symbol : method call(java.util.List<java.lang.Object>)
location: class OperationDefinitions
return func.call (values);
^
1 error
। इसके अलावा, अगर मैंने एक ही मुख्य वर्ग के तीन उप-वर्गों के रूप में तीन प्रकार (ऑपरेशन, मुख्य और ऑपरेशन परिभाषाएं) को एक साथ रखा है, तो यह ठीक से संकलित करता है।
तो मेरे पास मेरी समस्या के लिए कामकाज है, लेकिन मुझे आश्चर्य है, जैवैक को यहां एक कलाकार की आवश्यकता क्यों है, लेकिन ग्रहण नहीं करता है? क्या यह जावैक या ग्रहण में एक बग है?
मैं दोनों सूर्य javac 1.5.0_19 और 1.6.0_16
ऐसा लगता है कि यह वास्तव में बग 6724345 है। धन्यवाद! – amarillion