代码优先:)
/**
*
* @param arrayList the ArrayList
* @return a random object from the ArrayList
*/
public static Object randomArrayListObject(ArrayList<?> arrayList) {
Random random = new Random();
int i = random.nextInt(arrayList.size());
assert i >= 0;
assert i < arrayList.size();
return arrayList.get(i);
}
public static Class<? extends Juice> randomArrayListJuiceClass(
ArrayList<Class<? extends Juice>> arrayList) {
final Object o = randomArrayListObject(arrayList);
assert Juice.class.isAssignableFrom((Class) o);
if (Juice.class.isAssignableFrom((Class) o)) {
@SuppressWarnings("unchecked")
Class c = (Class<? extends Juice>) o;
return c;
} else throw new RuntimeException("wtf? not a Juice Class??");
}
我收到了这个警告:
未选中的作业:'java.lang.Class'为'java.lang.Class&lt;? 延伸drinks.Juice&gt;'
我将所有怪物代码放在randomArrayListJuiceClass()
中以试图避免此类警告,但我仍然无法弄明白。我该怎么办?
我的目标只是在没有警告的情况下返回(某种)Juice
类...我知道我只是在randomArrayListJuiceClass()
提供Juice
一些Exception
,我只是扔了它一个 Opc.Da.Server server = null;
static void readplc()
{
Opc.URL url = new Opc.URL("opcda://localhost/RSLinx OPC Server");
Opc.Da.Server server = null;
OpcCom.Factory fact = new OpcCom.Factory();
**this.server = new Opc.Da.Server(fact, null);**
....
}
,以防万一我变得邋and,并把它喂给别人。
我该怎么办?
答案 0 :(得分:3)
获取随机元素的方法应该是通用的,并将其返回类型绑定到输入的类型ArrayList
public static <T> T randomArrayListObject(ArrayList<T> arrayList) {
您的其他代码将变为
final Class<? extends Juice> o = randomArrayListObject(arrayList);
assert Juice.class.isAssignableFrom(o); // even this is kind of useless
return o;
假设您的断言已启用,则不需要抛出其他异常。