简体   繁体   English

在超类静态方法中实例化子类

[英]instantiate subclass in superclass static method

I'm developing ORM in Java. 我正在用Java开发ORM。 I want to do this. 我想做这个。

class Model {
    public static Model find(Object id) {
    }
}

class User extends Model;
class Post extends Model;

User user = User.find(15);
Post post = Post.find(1325);

How can I do this, or similar things. 我该怎么做,或类似的事情。 I don't want to pass Class object to find method. 我不想将Class对象传递给find方法。

You should not do this. 你不应该这样做。 A super class can never know how it's extended. 一个超级课程永远不会知道它是如何扩展的。

Use generics instead: 使用泛型代替:

package persistence;

public interface GenericDao<T, K extends Serializable>
{
    T find(K id);
    K save(T value);
    void update(T value);
    void delete(T value);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM