在查看代码的某个时候,我看到许多方法都指定了注释:
@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
我听说过这个"执行周围"的习语(或类似的)是什么?为什么我可以使用它,为什么我不想使用它?
给出以下代码:
public interface Selectable {
public void select();
}
public class Container implements Selectable {
public void select() {
...
}
public void createAnonymousClass() {
Selectable s = new Selectable() {
public void select() {
//see comment below.
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
我想Container.select()从我的匿名类' select()方法中访问.但是,this.select()会再次调用匿名类的select()方法.
我的建议是:
在Container中引入一个字段,例如
private Container self = this;
Run Code Online (Sandbox Code Playgroud)
现在我可以Container.select()通过self.select()在匿名类中调用来访问.
这是一种合理的方式吗?还是有更好的方法吗?
我有一个枚举的类对象(我有一个Class<? extends Enum>),我需要得到这个枚举所代表的枚举值的列表.该values静态函数有我需要什么,但我不知道怎么去从类对象访问它.
我试图使用反射获得一个不可见类,AKA包私有类的实例.我想知道是否有办法切换修饰符使其公开然后使用它来访问它Class.forName.当我尝试这一点时,它阻止我说我不能这样做.不幸的是setAccesible,Class班上没有方法.
我有关于泛型的Java问题.我宣布了一个通用名单:
List<? extends MyType> listOfMyType;
Run Code Online (Sandbox Code Playgroud)
然后在某些方法中我尝试实例化并将项添加到该列表:
listOfMyType = new ArrayList<MyType>();
listOfMyType.add(myTypeInstance);
Run Code Online (Sandbox Code Playgroud)
哪里myTypeInstance只是一个类型的对象MyType; 它不会编译.它说:
该方法在类型List <capture#3-of中添加(捕获#3-of?extends MyType)?extends MyType>不适用于参数(MyType)
任何的想法?
考虑一下代码:
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.createStatement(myQueryString);
rs = ps.executeQuery();
// process the results...
} catch (java.sql.SQLException e) {
log.error("an error!", e);
throw new MyAppException("I'm sorry. Your query did not work.");
} finally {
ps.close();
rs.close();
}
Run Code Online (Sandbox Code Playgroud)
上面没有编译,因为都PreparedStatement.close()和ResultSet.close()抛出java.sql.SQLException.那么我要在finally子句中添加一个try/catch块吗?或者将close语句移动到try子句中?或者只是不打扰打电话?