क्यों पैकेज-info.java उपयोगी है?


97

जब मैं अपने जावा प्रोजेक्ट पर चेकस्लील चलाता हूं तो यह Missing package-info.java file.कुछ वर्गों के लिए कहता है , लेकिन उन सभी के लिए नहीं। मैं वास्तव में यह पता नहीं लगा सकता कि यह संदेश कभी-कभी ही क्यों दिखाई देता है। इसके अलावा मेरी परियोजना पैकेज-info.java के बिना पूरी तरह से ठीक चलती है।

पैकेज-info.java क्या करता है? क्या मुझे अपने जावा प्रोजेक्ट्स के लिए वास्तव में इसकी आवश्यकता है?


3
आप उन्हें पैकेज स्तर पर दस्तावेज या एनोटेटिंग के लिए उपयोग कर सकते हैं। इस प्रश्न को देखें ।
मैकडॉवेल

मैं इस समय पैकेज-info.java का प्रशंसक रहा हूं, लेकिन मुझे आश्चर्य है कि अगर 2018 में README.md अधिक उपयुक्त है
श्रीधर सरनोबत

@ श्रीधर-सरनोबत शिवाय पैकेज-info.java और README.md, Git से, Confluene संभवतः Jira टिकट को भी जोड़ने की संभावना है। इस तरह से भी आरेख, वर्कफ़्लो या वीडियो जोड़े जा सकते हैं।
सुकरात

1
क्या आप जानते हैं कि आप अन्य कोड भी वहां लिख सकते हैं? कक्षाओं आदि की तरह ... अजीब!
sproketboy

जवाबों:


106

इसका उपयोग पैकेज के लिए javadocs उत्पन्न करने के लिए किया जाता है।

/**
* Domain classes used to produce .....
* <p>
* These classes contain the ......
* </p>
*
* @since 1.0
* @author somebody
* @version 1.0
*/
package com.domain;

पैकेज के लिए com.domainपैकेज की जानकारी उत्पन्न करेगा :

उदाहरण परिणाम: https://docs.oracle.com/javase/7/docs/api/java/awt/package-summary.html


खेद अभी भी स्पष्ट नहीं है कि आप किस हिस्से के लिए Example resultयह readme.md है?
शायर

50

एनोटेशन

Package-info.java का उपयोग करने का एक और अच्छा कारण FindBugs द्वारा उपयोग के लिए डिफ़ॉल्ट एनोटेशन जोड़ना है । उदाहरण के लिए, यदि आप इसे अपनी पैकेज-जानकारी फ़ाइल में रखते हैं:

@DefaultAnnotation(NonNull.class)
package com.my.package;

जब उस पैकेज में कोड पर फाइबग्यू चलता है, तब तक सभी तरीकों और क्षेत्रों को गैर-शून्य माना जाता है जब तक कि आप उन्हें एनोटेट नहीं करते @CheckForNull। यह @NonNullप्रत्येक विधि और क्षेत्र में एनोटेशन जोड़ने के लिए डेवलपर्स की आवश्यकता की तुलना में बहुत अच्छा है और अधिक मूर्ख है ।


12

न केवल कुछ खोजबीन एनोटेशन हैं, बल्कि आम पुस्तकालयों में बहुत सारे जावा एनोटेशन के java.lang.annotation.ElementType.PACKAGEप्रकारों में से एक उनके स्वयं के java.lang.annotation.Targetएनोटेशन के संभावित मूल्यों में से एक है , जैसे:

com.google.gwt.core.client.js.JsNamespace
com.querydsl.core.annotations.Config
com.sun.xml.bind.XmlAccessorFactory
groovy.transform.BaseScript
java.lang.Deprecated
javax.annotation.Generated
javax.xml.bind.annotation.XmlAccessorOrder
org.hibernate.annotations.TypeDef
net.sf.ehcache.pool.sizeof.annotations.IgnoreSizeOf
org.apache.hive.common.HiveVersionAnnotation
org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeAction
org.codehaus.commons.nullanalysis.NotNullByDefault
org.eclipse.persistence.oxm.annotations.XmlNameTransformer
org.glassfish.jersey.Beta
org.jgroups.annotations.Experimental

और भी बहुत कुछ।

यह package-info.javaफ़ाइल फ़ाइल होगी, जहाँ आप इस तरह के एनोटेशन (जावदोक के साथ) रख सकते हैं।


7

एक पैकेज-info.java फ़ाइल एक पूरे पैकेज के दस्तावेज़ में javadoc जोड़ने की अनुमति देती है। उदाहरण के लिए http://docs.oracle.com/javase/7/docs/api/java/applet/package-summary.html देखें ।

यदि आप लापता पैकेज प्रलेखन की परवाह नहीं करते हैं, तो चेतावनी को अनदेखा करें या JavadocPackage चेक को अक्षम करें


4

Package-info.java है कि किसी भी जावा स्रोत पैकेज में जोड़ा जा सकता एक जावा फ़ाइल है। इसका उपयोग इसके नाम के अनुसार "पैकेज" स्तर पर जानकारी प्रदान करने के लिए किया जाता है। इसमें पैकेज में उपयोग किए गए दस्तावेज़ और एनोटेशन शामिल हैं।

javadoc उदाहरण पहले से ही उत्तर में प्रदान किया गया है, नीचे का भाग बताता है कि यह एनोटेशन का काम कैसे करता है।

उदाहरण के लिए, नीचे फ़ाइल में इसका उपयोग joda.time की स्थिति को "स्थानापन्न" करने के लिए किया जाता है। org.jadira.usertype.dateandtime.joda.PersistentDateTime के साथ समयरेखा

@TypeDefs({
    @TypeDef(name = "PersistentDateTime", typeClass = PersistentDateTime.class, defaultForType=DateTime.class)})

package xyz.abc;

import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import org.jadira.usertype.dateandtime.joda.PersistentDateTime;
import org.joda.time.DateTime; 

उपलब्ध कई एनोटेशन हैं जिनके साथ "पैकेज" स्तर पर विभिन्न चीजों को करने के लिए उपयोग किया जा सकता है। इसे https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/package-summary.html पर देखा जा सकता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.