2012-10-06 140 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'那样执行它吗? –