Riy*_*lla 7 java api frameworks exif
对不起,标题含糊不清; 我想不出如何更清楚地说出来.以下是问题的重点:
强调
题
鉴于设置信息,我所追求的是试图找到一种方法来预先定义人们通常想要从他们的图像中获得的30或40个最常见的元数据标记; 现在一切都被定义为枚举,但是这种类不可扩展.
如果我使用"每元数据类标记"路由,则可扩展性将很简单,但是开箱即用的API将不那么友好.
如果闭包提供了一个非常漂亮和简单的解决方案,我会考虑制作这个Java 8+库的v2.0,否则我显然更愿意让它与更多系统(Java 6/7)兼容而不是更少.
摘要
我对库的目标是"易于使用和扩展" - 我觉得我已经在1.x版本中使用了"简单易用"的方面,但是库不容易扩展,我想在2.x系列.
我已经坐在2.x版本上超过一年等待灵感罢工,它已经躲过了我; 我希望有人可以发现我的错误,我可以以非常优雅的方式向前移动lib.
谢谢你们的时间!
Java枚举不可扩展,但它们可以实现接口.
您通常可以通过定义提供程序可以实现的接口以及实现它的枚举来实现两全其美,并包含用户可以直接使用的常用实例:
public interface Pet {
    public String talk();
}
public enum CommonPet implements Pet {
    CAT("Meow!"),
    DOG("Woof! Woof!");
    private final String cry;
    CommonPet(String cry) {
        this.cry = cry;
    }
    @Override
    public String talk() {
        return cry;
    }
}
用于接受原始枚举实例的API现在应该接受任何接口实例.
用户可以使用相同的模式提供自己的实现:
public enum UncommonPet implements Pet {
    LION;
    @Override
    public String talk() {
        return "Roar!";
    }
}
最后,并不要求所有实现都应该是枚举,因此在更复杂的情况下,用户可以选择将接口实现为完整的类:
public class Parrot implements Pet {
    private String phrase = "Pieces of eight!";
    @Override
    public String talk() {
        return phrase;
    }
    public void teach(String phrase) {
        this.phrase = phrase;
    }
}
| 归档时间: | 
 | 
| 查看次数: | 1460 次 | 
| 最近记录: |