Package: Naming, Type Imports

Package એ Java ની labelled shelf છે classes માટે: package statement એ first statement હોવો જોઈએ, folders dotted name ને mirror કરે છે, અને import તમને full addresses લખવાથી save કરે છે.

10 min read · 9 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

એક folder માં Twenty-three files

BookBridge grow થઈ ગયું છે: Book, Member, Librarian, FineReceipt, IssueRegister, OverdueException, Reminder... 23 files એક folder માં, અને તમે just teammate ના Report ની બાજુમાં બીજી class Report add કરવાનો પ્રયાસ કર્યો.

library એ આ problem ને centuries ago solve કર્યું હતું: shelves with labels. Fiction અહીં, reference ત્યાં, same-titled books different shelves પર peacefully living.

Java ની labelled shelf એ package છે: related classes અને interfaces નો named group.

Theory

shelf ને declaring

file ની top પર એક line class ને shelf પર મૂકે છે:

package circulation;

public class IssueRegister { ... }

Rules જે exam check કરે છે:

  • package statement એ file નું first non-comment statement હોવું જોઈએ, કોઈ import અથવા class પહેલાં
  • folder structure એ name ને mirror કરવું જોઈએ: circulation ની classes circulation/ folder માં lives કરે છે; package com.bookbridge.util com/bookbridge/util/ માં lives કરે છે
  • convention: package names lowercase છે, ઘણીવાર reversed domain (com.bookbridge) globally unique રહેવા માટે

Practical

બે files, બે shelves

// file: circulation/IssueRegister.java
package circulation;              // first statement, folder matches

public class IssueRegister {
    public void note(String title) {
        System.out.println("Issued: " + title);
    }
}

// file: BookBridge.java (default package, for the demo)
import circulation.IssueRegister; // single-type import

public class BookBridge {
    public static void main(String[] args) {
        IssueRegister r = new IssueRegister();
        r.note("Let Us C");
    }
}

Theory

shelved class સુધી પહોંચવાની ત્રણ રીતો

એકવાર IssueRegister circulation માં lives કરે છે, બીજા code ની પાસે 3 access routes છે:

  • Single-type import: import circulation.IssueRegister; પછી short name ને use કરો. Precise, self-documenting, preferred.
  • On-demand import: import circulation.*; એ package ની ALL classes ને available બનાવે છે. Convenient, પણ hide કરે છે કે names ક્યાંથી આવે છે.
  • Fully qualified name, કોઈ import નહીં: circulation.IssueRegister r = new circulation.IssueRegister(); Verbose; useful જ્યારે 2 packages બંને Report offer કરે છે અને તમારે બંને જોઈએ.

Quiz

import java.util.*; file ની top પર છે. કયું statement TRUE છે?

  1. java.util ની ALL classes AND તેના subpackages જેવા કે java.util.regex import થાય છે
  2. ફક્ત java.util ની અંદર directly classes import થાય છે; subpackages નહીં
  3. આખી class library હવે import થઈ ગઈ છે, એટલે program run time પર slower compile થાય છે
  4. એ compile error છે; star form exist નથી કરતું
Show the answer

ફક્ત java.util ની અંદર directly classes import થાય છે; subpackages નહીં

star exactly એક level સુધી reaches કરે છે: java.util itself ની classes. Subpackages એ separate packages છે; java.util.regex ને તેની own import line જોઈએ છે. એ trap છે જે option A માં walks કરે છે, અને એ constantly asked થાય છે. Option C myth ને doubles કરે છે: imports compile-time naming convenience છે અને run-time cost add નથી કરતા. Option D form ને deny કરે છે જે તમે already use કર્યું છે. remember: star એટલે this shelf ની books, whole wing નહીં.

Think first

import જે તમે ક્યારેય લખ્યું નથી

String, System, Math: તમે lesson 1 થી એને કોઈ import statement વગર use કર્યા છે. tap કરતા પહેલા: શા માટે એ work કરે છે?

Show the answer

એ java.lang માં lives કરે છે, એક package જે Java automatically દરેક file માં import કરે છે, precisely કારણ કે કોઈ program એના વગર survive નથી કરતું. બાકીનું બધું asking needs કરે છે: Scanner java.util માં sits કરે છે, એટલે keyboard input import java.util.Scanner; સાથે start થાય છે. Exam one-liner: java.lang default રીતે imported છે; બાકીના બધા packages ને explicit import અથવા fully qualified name જોઈએ છે.

Watch out

જ્યાં package files break થાય છે

Misplaced package statement: package circulation; પહેલાં કોઈ પણ statement (even import) compile error છે. Order forever: package, પછી imports, પછી class.

Folder mismatch: package circulation; declare કરવું જ્યારે file elsewhere sits કરે છે તો compile થાય છે, પછી run time પર NoClassDefFoundError સાથે dies થાય છે; JVM circulation/IssueRegister.class ને look કરે છે અને કંઈ find નથી કરતું. javac -d . સાથે compile કરો અને folder tree તમારા માટે build થાય છે.

Theory

તમે આખા semester દરમિયાન importing કરી રહ્યા છો

અહીં કંઈ foreign નથી: java.util, java.io અને friends એ just Sun ની shelves છે, domain shortened સાથે reverse-domain convention દ્વારા named. BookBridge હવે pros ને mirror કરે છે: desk classes માટે circulation, month-end માટે reports. next lesson natural follow-up પૂછે છે: shelving ACCESS પર શું કરે છે? Unit 2 નો એ default no-modifier level, package-private, finally તેનો purpose show કરવાનું છે.

Summary

Key takeaways

  • Package એ related classes નો named group છે; membership ને package name; સાથે declare કરો file ના first statement તરીકે.
  • Folders dotted name ને mirror કરે છે: com.bookbridge.util com/bookbridge/util/ માં lives કરે છે.
  • Names lowercase છે, conventionally reverse-domain uniqueness માટે.
  • ત્રણ access routes: single-type import, on-demand import (package.*), અથવા fully qualified names.
  • star એક package ની classes ને import કરે છે, ક્યારેય તેના subpackages નહીં.
  • java.lang alone auto-imported છે: String અને System import-free work કરે છે.
  • Memory hook: package shelf ને label કરે છે, import તમને full address ને aloud reading થી save કરે છે.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Threads and Packages

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Package: Naming, Type Imports · Java Programming Language · Gri-Learn