gpt4 book ai didi

采用数组的 Java 模板类;有什么办法可以强制执行吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:22 25 4
gpt4 key购买 nike

我正在编写一个模板类,它的类型应该是一个数组。

public class Foo<T> {...}

如何最好地强制“T”是数组类型? (int[], Bar[], ...) 显然,如果可能的话,最好是编译时间,但如果 T 不是数组,那么在调试运行时抛出异常或其他东西的最佳方法是什么?

最佳答案

我将同意并延长David Blevin's回答。您可以将 MyClass 放入工厂类中,并将 MyClass 的构造函数设为私有(private)。这样只有工厂类中的代码才能直接实例化一个MyClass。确保他们做正确的事取决于您。您可以使工厂类参数化(如下所示)或使 make 方法本身参数化。

// T is the component type of the array
public class MyClassFactory < T >
{
// we can't directly enforce TARRAY=T[], but TARRAY=T[]
public final class MyClass < TARRAY >
{
private MyClass ( ... arguments ) throws ... exceptions { ... code }
// no non private constructors
.... more code
}

// this is the only way to construct a MyClass
// so we indirectly enforced TARRAY=T[]
public MyClass<T[]> make ( ... arguments ) throws ... exceptions
{
return new MyClass <T[]>( ... arguments ) ;
}
}

关于采用数组的 Java 模板类;有什么办法可以强制执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3400649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com