2012-05-02 34 views
5

Với chương trình sau đây:Java namespace toàn cầu truy cập

class A { 
    static int java = 42; 
    static int System = -1; 

    public static void main(String[] args) { 
     java.lang.System.out.println("Foo"); 
    } 
} 

Biên dịch này mang lại cho tôi một lỗi nói rằng "int không thể dereferenced". Lý do là hiển nhiên, nhưng làm thế nào nên xử lý các tình huống như thế này. Nó đặc biệt có liên quan trong các kịch bản tạo mã, trong đó người ta không thể biết mã người dùng nào đan xen với mã được tạo ra.

Trong C# tôi sẽ chỉ sử dụng "global ::" specpace namespace trước "java.lang", nhưng bạn làm gì trong Java?

+0

Đó là điều tôi chưa bao giờ nghĩ đến! – adarshr

Trả lời

3

Không có giải pháp chung trong Java. Cách chúng ta đang sống với điều này là để

  1. tôn trọng quy ước đặt tên, phân biệt tên lớp từ tên gói/lĩnh vực, và
  2. đủ điều kiện var tĩnh với tên lớp của mình khi tạo mã.
+0

Làm thế nào có nghĩa vụ phải giúp đỡ? Eyvind tuân theo các quy ước đặt tên thông thường trong ví dụ của mình và nó không quan trọng nếu trường đó là tĩnh hay không, nó vẫn được ưu tiên hơn quyền truy cập vào gói java. – jarnbjo

+0

Như tôi đã nói, "Không có giải pháp chung trong Java" :) –

+0

Phải, đó là những gì tôi đã sợ. Chủ nghĩa thực dụng, tôi đến đây! – Eyvind

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