当前位置: 首页 > 知识库问答 >
问题:

Eclipse RCP属性测试器的期望值总是字符串吗?

华景明
2023-03-14

在eclipse文档中,我看到了以下片段(http://help.eclipse.org/neon/index.jsp?topic=%2forg.eclipse.platform.doc.isv%2freference%2fapi%2forg%2feclipse%2fcore%2fexpressions%2fPropertyTester.html):

<propertyTester
   namespace="org.eclipse.jdt.core"
   id="org.eclipse.jdt.core.IPackageFragmentTester"
   properties="isDefaultPackage"
   type="org.eclipse.jdt.core.IPackageFragment"
   class="org.eclipse.demo.MyPackageFragmentTester">
 </propertyTester>

使用以下属性测试程序实现:

public class MyPackageFragmentTester extends PropertyTester {
    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
        IPackageFragment fragment= (IPackageFragment)receiver;
              if ("isDefaultPackage".equals(property)) {
            return expectedValue == null
             ? fragment.isDefaultPackage()
             : fragment.isDefaultPackage() == ((Boolean)expectedValue).booleanValue();
        }
        Assert.isTrue(false);
        return false;
    }
}

我对((Boolean)expectedValue)部分有点疑惑--因为期望值是以字符串形式在 标记中给出的:

<test property="org.eclipse.jdt.core.isDefaultPackage" value="true" />

而且每当我实现属性测试器时,该值都是以字符串的形式给出的。

所以我的问题是:有没有可能有一个不是字符串的期望值?根据Eclipse RCP文档,它应该是...但怎么会!?

共有1个答案

平俊茂
2023-03-14

它不是很清楚,但期望值可以是字符串布尔值浮点数(!)或integer

org.eclipse.core.internal.expressions.expressions中运行的代码:

public static Object convertArgument(String arg) throws CoreException {
    if (arg == null) {
        return null;
    } else if (arg.length() == 0) {
        return arg;
    } else if (arg.charAt(0) == '\'' && arg.charAt(arg.length() - 1) == '\'') {
        return unEscapeString(arg.substring(1, arg.length() - 1));
    } else if ("true".equals(arg)) { //$NON-NLS-1$
        return Boolean.TRUE;
    } else if ("false".equals(arg)) { //$NON-NLS-1$
        return Boolean.FALSE;
    } else if (arg.indexOf('.') != -1) {
        try {
            return Float.valueOf(arg);
        } catch (NumberFormatException e) {
            return arg;
        }
    } else {
        try {
            return Integer.valueOf(arg);
        } catch (NumberFormatException e) {
            return arg;
        }
    }
}

因此它是一个字符串,除非它是truefalse或数字。

 类似资料:
  • 问题内容: 有没有一种简单的方法来测试Python字符串“ xxxxABCDyyyy”,以查看其中是否包含“ ABCD”? 问题答案: if “ABCD” in “xxxxABCDyyyy”: # whatever

  • 我有一个这样的界面 我想做的是当这个接口所涉及的对象被存储时,将默认为。 我尝试了,但这不起作用。 我确信我在这里做错了什么,并且非常感谢关于我如何实现这一点的一些反馈。

  • 下面是我的JSON: 我想用下面的规则更新上述JSON字符串的两个属性: 标志:我想盲目地将此属性更新为。 infoFlag:如果< code>info的< code>name属性为< code>null,那么我希望将< code>infoFlag更新为< code>true否则为< code>false,如果它为< code>not null。 因此,在用这些规则更新JSON之后,我希望将JSO

  • 问题内容: 检查值是否为有效日期(允许使用任何已知的日期格式)的简便方法是什么。 比如我有值,,它都应该被视为日期值,和值,,,不应被视为一个日期值。如果可能的话,最简单的检查方法是什么?因为时间戳也将被允许。 问题答案: 作为此副本的副本而被关闭,因此我认为在此处添加一些新信息很重要。我之所以写它,是因为我害怕人们会真正复制并粘贴此处发布的一些代码并在生产中使用它。 此处的大多数答案都使用一些仅

  • 问题内容: 如何测试字符串以查看其是否包含数组中的任何字符串? 而不是使用 问题答案: 编辑:这是使用Java 8流API的更新。如此清洁。仍然可以与正则表达式结合使用。 另外,如果我们将输入类型更改为List而不是数组,则可以使用。 如果希望返回匹配的字符串,也可以使用。 原始的过时的答案: 这是(VERY BASIC)静态方法。请注意,在比较字符串上区分大小写。一个原始的,使其不区分大小写的办

  • 问题内容: 我有一个简单的AJAX调用,服务器将返回包含有用数据的JSON字符串或PHP函数产生的错误消息字符串。如何测试此数据是JSON字符串还是错误消息。 最好使用一个称为的函数,就像您可以使用该函数来测试某个东西是否为数组一样。 这就是我要的: 问题答案: 使用JSON.parse