既然你说你不想让数据访问方法在不同的类(在对anish的答案的评论中),我以为为什么不尝试这样的东西。
public class Records {
public interface RecordFetcher{
public List getRecords();
}
static RecordFetcher Fruit=new RecordFetcher(){
public List getRecords() {
...
}
};
static RecordFetcher User=new RecordFetcher(){
public List getRecords() {
...
}
};
public static void main(String[] args) {
List fruitRecords=Records.Fruit.getRecords();
List userRecords=Records.User.getRecords();
}
}
编辑:
我想添加一个我的实现。
public class Test
{
public static void main(String[] args)
{
Test dataAccess=new Test();
List FruitList=dataAccess.getAllRecords(Fruit.myType);
List UserList=dataAccess.getAllRecords(User.myType);
}
List getAllRecords(T cl)
{
List list=new ArrayList();
if(cl instanceof Fruit)
{
// Use JDBC and SQL SELECT * FROM fruit
}
else if(cl instanceof User)
{
// Use JDBC and SQL SELECT * FROM user
}
return list;
}
}
class Fruit
{
static final Fruit myType;
static {myType=new Fruit();}
}
class User
{
static final User myType;
static {myType=new User();}
}
编辑:
我认为这个实现正如你所要求的那样
public class Test
{
public static void main(String[] args) throws InstantiationException, IllegalAccessException
{
Test dataAccess=new Test();
List FruitList=dataAccess.getAllRecords(Fruit.class);
List UserList=dataAccess.getAllRecords(User.class);
}
List getAllRecords(Class cl) throws InstantiationException, IllegalAccessException
{
T inst=cl.newInstance();
List list=new ArrayList();
if(inst instanceof Fruit)
{
// Use JDBC and SQL SELECT * FROM user
}
else if(inst instanceof User)
{
// Use JDBC and SQL SELECT * FROM fruit
}
return list;
}
}