Java 根据类型检索随机值的方法
我想知道实现这个目标最吸引人的方式是什么 我有一个黑盒子。我给它一个Java 根据类型检索随机值的方法,java,design-patterns,Java,Design Patterns,我想知道实现这个目标最吸引人的方式是什么 我有一个黑盒子。我给它一个支持的类型,它返回一个基于该类型的随机值 对于我支持的类型,我有一个enum,定义如下: public enum Types { INTEGER, DOUBLE, BIGINTEGER, BIGDECIMAL, STRING, BOOLEAN, CHAR } 我认为最简单的方法是创建一个静态函数,它返回一个基于类型的对象 public static Object get
支持的类型
,它返回一个基于该类型的随机值
对于我支持的类型,我有一个enum
,定义如下:
public enum Types
{
INTEGER,
DOUBLE,
BIGINTEGER,
BIGDECIMAL,
STRING,
BOOLEAN,
CHAR
}
我认为最简单的方法是创建一个静态函数,它返回一个基于类型的对象
public static Object getRandomValue(Types type)
{
switch(type)
{
case INTEGER:
return randomInt();
case DOUBLE:
return randomDouble();
case BIGINTEGER:
return randomBigInt();
case BIGDECIMAL:
return randomBigDecimal();
case STRING:
return randomString();
case BOOLEAN:
return randomBool();
case CHAR:
return randomChar();
}
}
问题是,每次我想要基于此方法检索随机值时,都必须进行额外的强制转换
我已经研究了设计模式抽象工厂
和工厂
,我无法确定实现这两种模式是否有优势。或者,如果有一种不同的设计模式似乎更合适
假设定义了我所有的random
方法
以下是客户机的一个示例:
public abstract class MyClass<T>
{
protected T t;
}
public class MyIntClass extends MyClass<Integer>
{
public MyIntClass()
{
t = getRandomValue(Types.Integer);
}
}
公共抽象类MyClass
{
保护T;
}
公共类MyIntClass扩展了MyClass
{
公共MyIntClass()
{
t=getRandomValue(Types.Integer);
}
}
像这样的东西怎么样:
public <T> T getRandom(Class<? super T> type);
您可能需要做一些递归工作,以允许super
方面允许int
和Integer
使用同一供应商。只是想知道,您将如何使用生成的结果?@lazyberezovsky在客户端的一个示例中添加了如果Java提供了重载机制以便您可以直接调用供应商,映射的意义是什么:MyType var=overloadedFunction()
?@Val请注意,我传递的是类
而不是OP的类型
枚举
public <T> T getRandom(Class<? super T> type){
return (T) myMap.get(Type).get();
}