小编Bug*_*ray的帖子

检查枚举类型是否包含给定名称的常量

我的代码中有多个枚举:

public enum First { a, b, c, d; }

public enum Second { e, f, g; }
Run Code Online (Sandbox Code Playgroud)

我想有一个方法,使用valueOf()检查任何枚举中是否存在值,而不为每个枚举类型写一个值.例如(此代码不运行):

public boolean enumTypeContains(Enum e, String s) {
    try {
        e.valueOf(s);
    } catch (IllegalArgumentException iae) {
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

用法:

enumTypeContains(First,"a"); // returns true
enumTypeContains(Second,"b"); // returns false
Run Code Online (Sandbox Code Playgroud)

关于如何做这样的事情的任何想法?

java generics enums

7
推荐指数
2
解决办法
1万
查看次数

自定义MapReduce输入格式 - 找不到构造函数

我正在为Hadoop 0.20.2编写一个自定义的InputFormat,并且遇到NoSuchMethodException我无法摆脱.我开始时:

public class ConnectionInputFormat extends FileInputFormat<Text, Connection> {

    @Override
    public RecordReader<Text, Connection> createRecordReader(InputSplit split, TaskAttemptContext context) throws IOException, InterruptedException {
        return new ConnectionRecordReader();
    }
}
Run Code Online (Sandbox Code Playgroud)

运行时出现此错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodException: testingground.TestInputJob$ConnectionInputFormat.<init>()
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:115)
at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:882)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:779)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:432)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:447)
at testingground.TestInputJob.run(TestInputJob.java:141)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
at testingground.TestInputJob.main(TestInputJob.java:156)
Caused by: java.lang.NoSuchMethodException: testingground.TestInputJob$ConnectionInputFormat.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:109)
... 8 more
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

在初始化错误并在线研究之后,我认为可能是因为我没有零参数构造函数,所以我添加了一个:

public class ConnectionInputFormat extends FileInputFormat<Text, Connection> {

    public ConnectionInputFormat() {
        System.out.println("NetflowInputFormat …
Run Code Online (Sandbox Code Playgroud)

java hadoop mapreduce

7
推荐指数
1
解决办法
3246
查看次数

标签 统计

java ×2

enums ×1

generics ×1

hadoop ×1

mapreduce ×1