如何强制返回类型是特定类的变量?

时间:2017-12-01 08:14:31

标签: android android-intent return-type r.java-file

我有以下方法。

public abstract String getIntent() 

以下课程

public class Intents
{
    public static final String SUCCEEDED = "SUCCEEDED";
    public static final String FAILED = "FAILED";
    // hundreds of other strings.
}

我想强制该方法的返回类型是Intents类的类变量。我该怎么办?我曾想过使用像@StringRes这样的自定义注释 例如:

public abstract @Intents String getIntent() 

但是,如果我查看所有可用的注释,这似乎只适用于R.java文件中生成的id。我得出了这个结论,因为返回类型总是一个整数,R.java包含多个具有相似名称的类,如注释,每个类包含生成的整数。

接下来,我在思考如何在R.java中创建自定义类,以便创建注释。但我没有办法做到这一点。我可以简单地创建一个单独的xml并为每个Intent生成一个id,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="succeeded" type="string">succeeded</item>
    <item name="failed" type="string">failed</item>
</resources>

然后使用@StringRes注释。但是,这只会限制我使用任何类型的字符串资源。

我想到的另一个解决方案是创建一个枚举。通过这种方式,我可以简单地使用该枚举作为返回类型。但是如果有可能的话我想使用注释。否则我将不得不重写整个Intents类。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

也许是这样的?

    @StringDef({"AAA", "BBB"})
    @Retention(RetentionPolicy.SOURCE)
    public @interface Intents {}

    public void test(@Intents String input)
    {

    }

enter image description here

相关问题