如何限制只使用一个THUMNAIL?这意味着如果开发人员使用THUMNAIL_MID和THUMBNAIL,它应该抛出编译错误,以便开发人员知道只能使用一个THUMNAIL常量。
不允许
ImageSize[] imageArray = {ImageSize.A4,ImageSize.THUMBNAIL_MID,ImageSize.THUMBNAIL} ;
允许
ImageSize[] imageArray = {ImageSize.A4,ImageSize.THUMBNAIL_MID} ;
ENUM代码
public enum ImageSize
{
THUMBNAIL(50, 50, "t"), PASSPORT(200, 200, "p"), SMALL(240, 135, "s"), MEDIUM(
480, 270, "m"), LARGE(960, 540, "l"), A4(800, 600, "a4"),THUMBNAIL_MID(120,155,"t");
/**
* The width of the image in pixels
*/
private final int width;
/**
* The height of the image in pixels
*/
private final int height;
/**
* The image size type
*/
private final String type;
ImageSize(int width, int height, String type)
{
this.width = width;
this.height = height;
this.type = type;
}
public int getWidth()
{
return width;
}
public int getHeight()
{
return height;
}
public String getType()
{
return type;
}
public static ImageSize getImageSizeByType(String type)
{
if (type != null)
{
if (type.equalsIgnoreCase(THUMBNAIL.getType()))
{
return THUMBNAIL;
}
if (type.equalsIgnoreCase(PASSPORT.getType()))
{
return PASSPORT;
}
if (type.equalsIgnoreCase(SMALL.getType()))
{
return SMALL;
}
if (type.equalsIgnoreCase(MEDIUM.getType()))
{
return MEDIUM;
}
if (type.equalsIgnoreCase(LARGE.getType()))
{
return LARGE;
}
if (type.equalsIgnoreCase(THUMBNAIL_MID.getType()))
{
return THUMBNAIL_MID;
}
}
return null;
}
}
}
答案 0 :(得分:0)
我建议创建一个新的枚举。新枚举可以包含单个字段 - 对旧枚举的引用。您可以在新枚举中创建与您希望允许的旧枚举值相对应的值。
然后在您的代码中,您使用新的枚举类型(如果适用)。我假设如果使用新的枚举类型总是合适的话,你可以删除额外的枚举类型。
我使用名称AllowableImageSize,因为我不熟悉上下文。您应该选择一个更好的名称(例如,ThumbnailImageSize,PassportImageSize,LinkImageSize等)。
您不仅限于创建一个新的枚举。根据您的需要,您可以使用ThumbnailImageSize和PassportImageSize指向ImageSize的不同子集。
我在ideone上创建了示例代码。
class Main
{
public static void main ( String [ ] args )
{
}
}
enum AllowableImageSize
{
THUMBNAIL_MID(ImageSize.THUMBNAIL_MID), THUMBNAIL(ImageSize.THUMBNAIL);
public final ImageSize imageSize;
AllowableImageSize(ImageSize imageSize)
{
this.imageSize=imageSize;
}
}
enum ImageSize
{
THUMBNAIL(50, 50, "t"), PASSPORT(200, 200, "p"), SMALL(240, 135, "s"), MEDIUM(
480, 270, "m"), LARGE(960, 540, "l"), A4(800, 600, "a4"),THUMBNAIL_MID(120,155,"t");
/**
* The width of the image in pixels
*/
private final int width;
/**
* The height of the image in pixels
*/
private final int height;
/**
* The image size type
*/
private final String type;
ImageSize(int width, int height, String type)
{
this.width = width;
this.height = height;
this.type = type;
}
public int getWidth()
{
return width;
}
public int getHeight()
{
return height;
}
public String getType()
{
return type;
}
public static ImageSize getImageSizeByType(String type)
{
if (type != null)
{
if (type.equalsIgnoreCase(THUMBNAIL.getType()))
{
return THUMBNAIL;
}
if (type.equalsIgnoreCase(PASSPORT.getType()))
{
return PASSPORT;
}
if (type.equalsIgnoreCase(SMALL.getType()))
{
return SMALL;
}
if (type.equalsIgnoreCase(MEDIUM.getType()))
{
return MEDIUM;
}
if (type.equalsIgnoreCase(LARGE.getType()))
{
return LARGE;
}
if (type.equalsIgnoreCase(THUMBNAIL_MID.getType()))
{
return THUMBNAIL_MID;
}
}
return null;
}
}