2010-08-13 82 views
16

Tôi có thể nhập, sử dụng lớp học từ gói khác không? Trong Eclipse tôi đã thực hiện 2 gói ai khác chính là thứ haijava cách sử dụng các lớp học trong gói khác?

 
main 
-main (class) 
second 
-second (class) 

và tôi muốn các chức năng chính của lớp học chính để gọi hàm x trong lớp thứ hai. Tôi có thể làm như thế nào? Tôi đã thử:

import second; 
second.x(); (if both classes are in the same package then it works) 
second.second.x(); 

nhưng không ai trong số họ làm việc. Tôi không còn ý tưởng.

+0

Ý của bạn là gì theo chính và số chính thứ hai? Tên của các lớp và gói họ đang ở là gì? –

Trả lời

23

Bạn phải cung cấp đường dẫn đầy đủ mà bạn muốn nhập.

 
import com.my.stuff.main.Main; 
import com.my.stuff.second.*; 

Vì vậy, trong lớp học chính của bạn, bạn phải:

 
package com.my.stuff.main 

import com.my.stuff.second.Second; // THIS IS THE IMPORTANT LINE FOR YOUR QUESTION 

class Main { 
    public static void main(String[] args) { 
     Second second = new Second(); 
     second.x(); 
    } 
} 

EDIT: thêm ví dụ để đáp ứng với Shawn D's bình luận

Có thay thế khác, như Shawn D chỉ ra, nơi bạn có thể chỉ định tên gói đầy đủ của đối tượng mà bạn muốn sử dụng. Điều này rất hữu ích ở hai địa điểm. Thứ nhất, nếu bạn đang sử dụng lớp đúng một lần:

class Main { 
    void function() { 
     int x = my.package.heirarchy.Foo.aStaticMethod(); 

     another.package.heirarchy.Baz b = new another.package.heirarchy.Bax(); 
    } 
} 

Ngoài ra, điều này rất hữu ích khi bạn muốn phân biệt giữa hai lớp với tên viết tắt giống nhau:

class Main { 
    void function() { 
     java.util.Date utilDate = ...; 
     java.sql.Date sqlDate = ...; 
    } 
} 
+1

Ngoài ra, nếu bạn chỉ tham chiếu lớp ở một chỗ, bạn chỉ có thể sử dụng gói đầy đủ + tên lớp trong mã mà không thực hiện nhập hoặc nếu bạn cần phân giải cùng một tên lớp được sử dụng trong hai câu lệnh nhập. –

4

Với ví dụ của bạn, bạn cần thêm việc nhập khẩu sau đây trong lớp main.main của bạn:

import second.second; 

một số lời khuyên thưởng, chắc chắn bạn titlecase tên lớp học của bạn như là một tiêu chuẩn Java. Vì vậy, ví dụ lớp Main của bạn sẽ có cấu trúc:

package main; //lowercase package names 
public class Main //titlecase class names 
{ 
    //Main class content 
} 
+0

Bạn cần đặt lớp thứ hai là "công khai" – mor222

0

Nó phải là như import package_name.Class_Name -> Nếu bạn muốn nhập một lớp học cụ thể (hoặc)

import package_name.* -> Để nhập tất cả các lớp trong một gói

Các vấn đề liên quan