3
回答
怎么调用另一个类中的变量

 

 

<无标签>
举报
可爱风雨
发帖于5个月前 3回/127阅

以下是问题补充:

  • @可爱风雨 :如图,第二张图的蓝标处引用第一张图的path变量 (5个月前)

理论上,若要调用另一个类中的变量,

若这个变量是非静态(non-static)的、非私有(private)的,则要创建这个类(即另一个类)的一个对象,进而,用这个对象为引用,抽调出这个变量。

若这个变量是静态的,除了上述途径,还可以使用这个类的名称为引用,抽调出这个变量。

按照你的代码图,你要在何处,取另外的哪个类的变量? 请明示。

--- 共有 1 条评论 ---
可爱风雨不好意思,是第二张图的蓝标处引用第一张图的path变量 5个月前 回复

由于 你所要调出的变量 path,目前是在 if(returnVal == JFileChoose.APPROVE_OPTION){ ( open.java 28行)的代码块内定义的 (见 31行),这个变量的作用域只限于这个代码块之中,类 main 之中的驱动方法 main 是无法调用它的 。

解决办法:

给 类 open 的定义里,增添一个 静态的变量: 在 open.java 的第 12 行,写入 “

static String path;

除去 open.java  第 31行 声明 变量path 类型的 String, 即 31行改为: 

path=chooser.getSelectedFile().getAbsolutePath();

这样, 才可以 在 类 main 的第16行添写上:”String[] params = open.path;”,

String[] params = open.path;

实现调用 open.java 中 类 open 的静态变量 path 的目的。

尽管如此,编译时这里定会有漏洞(bug)。缘由是:

类 open中变量 path 是一个字符串, 可是,用它来初始化一个字符串数组(见 main.java第31行: String[] params = …), 是不可行的。

不知实际的操作设计是什么?

--- 共有 1 条评论 ---
可爱风雨实际是第一图的代码获取用户选择文件的路径,第二张图的代码把这个路径传参至kettle工具的作业里,String[] params应该改成什么那 5个月前 回复

为谨慎起见,仍然维持原状,就是说,仍将 params 定义为 字符串数组 (String []),只是它经历初始化之后,只拥有一个元素(长度为1的字符串数组)。做法是:将main.java 的第 16行,写成:

String [] params = {open.path};


这样就可以顺利地执行 main.java 第28行的操作,因为那里用到的 params[0]正好是数组的第一个元素(字符串),而它的值就是 open.path。不知这样是否 能够将这个路径值传至kettle工具的作业里。

--- 共有 2 条评论 ---
tcxu 回复 @可爱风雨 : 我对你的代码的预期功能不了解,很可能是瞎指挥。 先看看 open.path 是什么样,是不是用户所选的字符串路径: 在main.java 第15行写入 System.out.println(open.path); 这里似乎提示:open.path 所指示的文档,看不见。 5个月前 回复
可爱风雨先谢谢您了,但是按照您的写法,提示the file open.path is not visible 5个月前 回复
顶部