相关疑难解决方法(0)

在Java中创建T的新实例

在C#中,我们可以定义一个泛型class A<T> where T : new().在这段代码中,我们可以创建一个Twith 的实例new T().这是如何在Java中实现的?我读了一些文章说这是不可能的.

我使用的原因是在C#中使用泛型的单例模式:

public static class Singleton<T> where T : new()
{
    private static T instance;

    public static T Instance
    {
        get 
        {
            if (instance == null)
            {
                instance = SingletonCreater.Instance;
            }
            return instance;
        }
    }

    static class SingletonCreater
    {
        internal static readonly T Instance = new T();
    }
}
Run Code Online (Sandbox Code Playgroud)

并且方法使这种方法更优雅?

c# java generics design-patterns

2
推荐指数
1
解决办法
2546
查看次数

java中的通用数组创建

可能重复:
在Java中创建泛型类型的实例?
Java如何:通用阵列创建

我正在尝试创建一个泛型类.这是我的类文件.

public class TestClass<T> implements AbstractDataType<T>{

    T[] contents;

    public TestClass(int length) {
        this.contents = (T[])new Object[length];
    }
}
Run Code Online (Sandbox Code Playgroud)

但内容只有从中继承的方法Object class.如何为内容创建抽象数组?

java generics

1
推荐指数
1
解决办法
3599
查看次数

java - 通用返回类型?

我不确定这是否可以在Java中使用.此外,我无法弄清楚要在Google上查询的内容.无论如何,我想要一个方法,将一个参数作为一个Class(接口或类),方法的返回类型是该类的一个实例.事实上,我不想重铸一个Object.

我不确定这个功能是否存在或语法是什么.假设我有一个名为XYZ的类,这是我的伪方法.

private XYZ createInstance(XYZ.class, other args) {
  ...
  // create an instance of XYZ with other args named "_xyz_"
  ...
  return _xyz_;
}
Run Code Online (Sandbox Code Playgroud)

现在假设XYZ是某种通用语法.这在Java中是否可行?谢谢你的帮助.

java generics syntax

1
推荐指数
1
解决办法
1578
查看次数

如何通过泛型类型实例化?

是否可以实例化在抽象类中作为泛型类型参数提供的类?

例:

public MyClass {
    public MyClass(String test) {

    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以在另一个抽象类中实例化这个类?

public abstract class AbstractClass<T extends MyClass> {
    public AbstractClass() {
        T t = new T("test"); //Cannot instantiate the type T
    }
}
Run Code Online (Sandbox Code Playgroud)

java generics

1
推荐指数
1
解决办法
186
查看次数

如何基于实例化对象

我想基于列表的类型(即Truck)实例化一个对象并添加到列表中,我尝试下面的内容,但它警告我"sun.reflect.generics.reflectiveObjects.TypeVariableImpl与java.lang不兼容.类"

public <T extends Car> void addRow(List<T> list) {
Class<T> clazz = (Class<T>) ((ParameterizedType) list.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
T newInstance = clazz.newInstance();
list.add(newInstance);
}
Run Code Online (Sandbox Code Playgroud)

方法调用:

List<Truck> abc = new ArrayList<Truck>;
addRow(abc);
Run Code Online (Sandbox Code Playgroud)

任何帮助?一切都提前!

java generics list

0
推荐指数
1
解决办法
264
查看次数

泛型函数中的对象的Java分配解决方法?

基本上我要做的是从泛型函数中分配参数化类型:

public < T > T wishful_thinking(  )
{
    return new T( );
}
Run Code Online (Sandbox Code Playgroud)

由于"对象切片"(即,它编译,但"段错误"),转换也不起作用:

public < T > T wishful_thinking(  )
{
    return ( T )new Object( );
}
Run Code Online (Sandbox Code Playgroud)

所以...有没有解决方法(也许使用反射或其他一些)?

谢谢!

java

0
推荐指数
1
解决办法
444
查看次数

获取泛型类参数的类名

我想找到发送到泛型类的参数的类名,如下所示.

public abstract class RootClass<T extends Iface> {
    protected ApplicationContext applicationContext;
    public T getIfaceBean() {
        return applicationContext.getBean(T.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

But it looks like I can't do T.class(由于类型擦除?).

那么,Java Generics是否可以采取这样的行动?

如何使用Java Generics实现此类功能?

java generics

0
推荐指数
1
解决办法
167
查看次数

在Java中,为什么不能在泛型类上使用构造函数?

在Java中执行以下操作的限制背后的逻辑是什么?

public class genericClass<T>{
    void foo(){
       T t = new T(); //Not allowed
    }
}
Run Code Online (Sandbox Code Playgroud)

java generics

0
推荐指数
1
解决办法
95
查看次数

标签 统计

java ×8

generics ×7

c# ×1

design-patterns ×1

list ×1

syntax ×1