繁体   English   中英

编写通用类以处理内置类型

[英]Writing a generic class to handle built-in types

也许不太实用,但仍然很有趣。

对于矩阵乘法有一些抽象的问题,我迅速为整数实现了一个矩阵,然后检验了我的假设。

在这里,我注意到,如果我偶尔想将其与十进制或双精度型一起使用,那么仅使用int矩阵是不好的。 当然,我可以尝试将所有内容都加倍,但这不是方便的方法。

继续假设,我们可以拥有一堆能够相乘和相乘的对象-为什么不在矩阵中使用它们?

因此,在考虑到现在将是一个Matrix类之后,我面对无法使用通用T的问题,我需要它来支持一些可以相乘和相乘的接口。

问题是我可以在类中重写运算符,但无法引入支持运算符的接口。 我有一个内置类型的运算符,但仍然没有接口。

考虑到您不想重复工人阶级的身体,在这种情况下您会怎么做? 包装程序和隐式强制转换对我没有多大帮助,我对一个漂亮的解决方案感兴趣。

谢谢。

为此,您需要通用数学。 幸运的是我已经做到了 用法将类似于此“复杂”(即x + iy) 示例 现在,Operator类是MiscUtil的一部分。

好吧,有一种技术含量较低的方法可以做到这一点。 您不能为“ int”或“ double”添加新接口。 但是,您可以为对象声明一个接口,该接口可以乘以某种通用类型的值并相加。 然后,您可以为所需的所有类型实现接口:

public interface ICalculator<T>
{

   T Add(T x, T y);
   T Multiply(T x, T y);

}

public class MatrixMultiplier<T>
{

  public MatrixMultiplier(ICalculator<T> calculator) { ... }

}

public class IntCalculator : ICalculator<int>
{

  public int Add(int x, int y)
  {
    return x + y;
  }

  public int Multiply(int x, int y)
  {
    return x * y;
  }

}

暂无
暂无

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

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