java - 创建与参数化类型相同类的对象

标签 java generics parameterized-types

<分区>

代码如下:

package Fabrika.Trake;
import Vozila.*;

public class Traka<T extends Vozilo> extends Thread
{
    protected int vrijemeRada;
    ...

    @Override
    public void run()
    {
        while(true)
        {
            //I want to create the object here
        }
    }
}

现在,假设我有一个名为 Auto 的类,它扩展了 Vozilo

我想知道是否有一种方法可以T 不使用反射 来构造类型的对象。像这样的东西:

T object = new T(); 

当然,这是完全不正确的,但这只是说明我想做什么。 :)

最佳答案

使用 type token .

public class Traka<T extends Vozilo> extends Thread
{
    private Class<T> type;
    protected int vrijemeRada;
    ...

    public Traka(Class<T> type) {
        this.type = type;
   }

    @Override
    public void run()
    {
        while(true)
        {
            //I want to create the object here
            T object = type.newInstance();
        }
    }
}

这当然适用于具有已知数量参数的构造函数。我的示例使用无参数构造函数。

并且:不要扩展Thread!改为实现 Runnable。然后在您需要的任何地方使用这些可运行文件。

关于java - 创建与参数化类型相同类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24013981/

相关文章:

java - getActualTypeArguments 与父级,从子级获取其参数化类型

java - 在 Solaris 中使用 Java SE 1.7 的 Tomcat 7 启动失败

java - 在java中解析HTTP 1.0 header 日期/时间戳

java - java中线程之间的通信: stopping a thread if another thread has finished

c# - 带有开放泛型的工厂模式

c# - 锯齿状阵列的通用打印

javascript - 函数表达式的流通用类型(箭头函数)

delphi - Delphi 中构造函数约束的用例是什么?

Java 将 4 个字节转换为 int

c# - 返回一个包含泛型列表的类