मैं एक प्रकार-सुरक्षित कोड लिखना चाहता हूं। यहाँ मैं क्या करने की कोशिश की है या नहीं:एक प्रकार को सुरक्षित तरीके से लिखना
public interface ResultTronsformer<T>{
public T tranform(T t);
}
public class BigDecimalTransformer implements ResultTRansformer<BigDecimal>{
public BigDecimal transform(BigDecimal t){
return t.setScale(0);
}
}
अब मैं कॉलम इंटरफ़ेस जो की तरह
public interface Column{
public ResultTransformer<?> getTransformer();
}
लग रहा है परिभाषित करने और विधि
public class Report{
private Map<Column, Object> columnValuePairs;
public void putIntoACollection(Column c, Object columnsValue){
ResultTransformer<?> rt = c.getTransformer();
columnValuePairs.put(c, rt.transform(o)); //Error: Couldn't convert Object
//to the capture of wildcard
}
}
मैं कैसे पुनर्व्यवस्थित कर सकते हैं में उपयोग करना चाहते हैं वांछनीय प्रकार की सुरक्षा तक पहुंचने के लिए डिजाइन? शायद मुझे रनटाइम पर टाइप-चेकिंग करना चाहिए (अपवाद फेंकना)?
जावा का प्रकार सिस्टम मजबूत enoug नहीं है यह करने के लिए एच। लेकिन आप कुछ रैपर पुस्तकालयों का उपयोग कर सकते हैं जो ** ** बाहरी ** सुरक्षित एपीआई का पर्दाफाश करते हैं। उदाहरण के लिए: http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/collect/ClassToInstanceMap.html – Max
@ मैक्स इंटरस्टिंग, उस दृष्टिकोण के बारे में नहीं सुना है। शायद आप एक उदाहरण के रूप में एक उदाहरण प्रदान कर सकते हैं? – user3663882