2012-10-06 33 views
2

如果我有一個包內的類說mypackage.myclass,並且想要訪問與包的根(不在包內)相同的文件夾中的包的類說anothepackage.anotherclass我怎麼能這樣做?從包中訪問父文件夾包

示例代碼中提出:

// directories are preceeded by a DIR, files are precedded by a CLASS 
// any level deeper is preceeded by a [Tab] 
DIR mypackage 
    CLASS myclass 
    DIR myinnerpackage 
     CLASS myinnerclass 
DIR anotherpackage 
    CLASS anotheclass 
CLASS yetanotherclass 
DIR org 
    DIR apache 
     DIR commons 
      DIR exec 
       CLASS DefaultExecutor 

裏面的文件MyClass的:

package mypackage; 

public class myclass{ 
    // simplest example code I can come up with 
    org.apache.commons.exec.DefaultExecutor exec = new org.apache.commons.exec.DefaultExecutor(); 
} 

爲什麼這段代碼不適合我?

一般如何才能myclass訪問anotherclassyetanotherclass以及myinnerclass如何能夠使用它們?儘量避免導入,因爲我只想使用每個類的某些成員(一些變量具有相同的名稱,並且會讓事情變得混亂)!提前致謝!

+0

你在問'import'語句嗎? –

+0

不,我問如何訪問另一個類的父目錄中的類。 –

+1

「訪問」是什麼意思?如果你想在一個不同的包中使用一個類,你可以使用'import'語句(但這是你可能已經知道的基本東西(:)。如果你想獲得文件內容(或相關的),那麼記住包是隻是文件夾和Class.java是文件,如果最後一個是你的情況,那麼Eng.Fouad已經達到了答案。 –

回答

1

Java的吧?

內myClass的

import anotherPackage.anotherClass; 

,然後裏面你MyClass的你可以用

anotherClass ac=new anotherClass(); 

然後使用對象 「交流」,你可以訪問任何anotherClass屬性。

你可能想閱讀有關包和進口

編輯 不使用進口 我就可以使用完全合格的名稱的概念,嘗試像

anotherPackage.anotherClass ac=new anotherPackage.anotherClass() 

然後用交流toacees anotherClass性能

通過你提到的方式,不同的類有一些相同的變量和進口可以搞砸東西。 Java圍繞對象工作,相同的名字不會混淆。即使某些變量是靜態的,您將使用classnames.staticVar來訪問。所以沒有太多的混亂。 :-)

UPDATE: 下面被移到聊天,因爲它是從聊天得到全面 一些有用的片段討論

Askee面臨的classpath發出

CLASSPATH,顧名思義它是上課路徑。當我們編譯一個java文件時,編譯器會在當前目錄和類路徑中尋找類所需的資源。 一切卡恩不會在同一個目錄下(實際上也可以是,:-)),所以我們使用

set CLASSPATH 

設置CLASSPATH和別的地方來尋找問題的ckass MyClass的是類

沒有得到compilec作爲

org.apache.common.exec.DefaultExecutor was not in classpath 

建議設置父目錄的類路徑有它的工作

javac -classpath %cd%\.. myclass.java 
+0

是的,我說我想避免導入並直接使用其他類的某些變量! –

+0

我猜「Java」標籤意味着這是一個Java問題。 –

+0

在這種情況下,您可以使用完全限定名稱的概念嘗試像「anotherPackage.anotherClass ac = new anotherPackage.anotherClass()」然後使用ac來獲得另一個類屬性 –

1

使用相對路徑:

String dir = "../anotherpackage/anotheclass"; 
      ^
       | 
       -- (go one level up) 
+0

那麼它是不是像HTML一樣? (傻傻的我沒有想到它:在桌子上擺弄頭:) –

+0

你能告訴我如何在聲明中這麼做嗎?就像我想在'myclass'內的語句中使用'anotherclass'中的int variableA'一樣,我會像'int a = ../anotherpackage/anotherclass.variableA + 10'那樣執行它嗎? –