我可以从Java中的属性文件中调用方法吗?

时间:2011-08-03 11:51:24

标签: java

我正在使用java读取Excel文件,我已经为我的业务逻辑编写了一些方法,并且我想使用属性File实现。

我想做的是:

我有10个Columns和10个方法,我需要在该文件的属性文件中声明这个方法。

假设对于A列我只想要2种方法,那么我只能使用这2种方法,对于下一列B,假设有10种方法,等等。

我可以这样做,还是有其他方法可以实现这一点。

如果有其他方法可以实施,请建议我。在此先感谢。

2 个答案:

答案 0 :(得分:2)

为了防止误操作:属性文件只是文本文件,因此您需要使用Java代码来处理它们。它们只提供String-> String(key-> value)映射,因此您需要自己解析和解释字符串。

话虽如此,这里有一个关于你可能(想)做什么的建议:

由于你的问题不是很明确,我会做出几个假设:

  1. 您的属性文件包含以下内容:

      

    列1 =方法1,method7
      列2 =方法1,方法2,方法3
      等

  2. 这些方法都使用共同签名在一个类中声明

  3. 解析excel文件时,您可能希望根据属性文件将方法应用于列。

  4. 所以,这里有一些关于你能做什么的提示:

    1. 解析属性文件并为每列创建方法名称列表
    2. 处理单元格/列时,获取相应列的方法名称
    3. 使用YourClass.class.getMethod(methodName, parameterTypes)获取Method个实例。
    4. 调用Method#invoke(...)来调用该方法。
    5. 编辑:

      作为在一个类中使用所有方法的替代方法,您还可以使用完全限定的类名,例如: yourpackage.YourClass#method1,在#分割以获取类名和方法,然后使用Class.forName(fqcn)获取类,最后在其上调用getMethod(...)

      如果签名不同,您可能必须使用更复杂的表示法并解析参数类。

      有解析器准备用于此,但我不知道。但是,像ElConfiguration这样的一些apache公共项目可能对此任务有用。

答案 1 :(得分:0)

一点也不清楚你要做什么,但无论如何你绝对不能从.properties文件“调用”任何Java方法(或从Java调用{{1中包含的方法文件)。 .properties文件不可执行,任何标准Java实用程序也不将其视为可执行/可解释代码。实质上,它包含的只是数据,数据无法调用或被调用。

然而,您可以使用自己的框架来执行此操作,方法是使用反射将输入文件中的文本方法调用映射到针对一个或多个Java对象的实际方法调用,或者更简单(但不太灵活/通过存储您使用.properties / switch块直接映射到方法调用的预定代码集,或者将所需代码存储为JavaScript并使用现有的基于Java的JavaScript解释器来扩展执行代码。