अस्वीकरण: मुझे @Deprecated
का अर्थ और उद्देश्य पता है।विधि पैरामीटर और स्थानीय चर पर @Deprecated मतलब क्या है?
@Deprecated
एनोटेशन की परिभाषा जावा के स्रोत कोड में इस तरह दिखता है:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
मैं CONSTRUCTOR
, FIELD
, TYPE
, METHOD
और PACKAGE
का लक्ष्य मान होने का उद्देश्य समझने।
हालांकि, विधि पैरामीटर या स्थानीय चर को @Deprecated
के रूप में चिह्नित करने का क्या अर्थ है?
आश्चर्यजनक रूप से नीचे दिया गया उदाहरण किसी भी चेतावनी के बिना संकलित करता है।
interface Doable {
void doIt(@Deprecated Object input);
}
class Action implements Doable {
@Override
public void doIt(@Deprecated Object input) {
String string = String.valueOf(input); // no warning!
@Deprecated
String localVariable = "hello";
System.out.println("Am I using a deprecated variable?" + localVariable); // no warning!
}
}
क्या यह भविष्य में लागू करने का इरादा रख सकता है?
एफडब्ल्यूआईडब्ल्यू, मैं उबंटू 12.04 64 बिट पर जेडीके 1.7.0_11 का उपयोग करता हूं। परिणाम वही है चाहे मैं ग्रहण या कमांड लाइन से प्रोग्राम चलाता हूं।
संकलक ऐसे java.util.Date
वर्ग के पदावनत कंस्ट्रक्टर्स से एक का उपयोग के रूप में @Deprecated
की सामान्य उपयोग के लिए चेतावनी थूक से बाहर है,।
$ javac com/adarshr/Test.java -Xlint:deprecation
com/adarshr/Test.java:12: warning: [deprecation] Date(int,int,int) in Date has been deprecated
new Date(2013, 1, 31);
^
1 warning
$
$ javac -version
javac 1.7.0_11
सिर्फ जिज्ञासा के लिए, आप किस कंपाइलर का उपयोग कर रहे हैं? और जब आप '// कोई चेतावनी' लिखते हैं तो क्या आप आईडीई के अंदर होते हैं? – ThanksForAllTheFish
मैं यह समझने के लिए संघर्ष करता हूं कि बहिष्कृत तर्क के साथ एक गैर बहिष्कृत विधि का क्या अर्थ हो सकता है ... – assylias