首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写泛型类来处理内置类型。

编写泛型类来处理内置类型。
EN

Stack Overflow用户
提问于 2008-10-03 11:09:10
回答 2查看 874关注 0票数 2

也许不太实用,但还是很有趣。

有一些关于矩阵乘法的抽象问题,我很快实现了一个矩阵,然后测试我的假设。

在这里,我注意到,如果我偶尔想用它加上十进制或双数,那么只使用int矩阵就不好了。当然,我可以试着把所有的东西都投到两倍,但这不方便。

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

所以,在考虑到它将是一个矩阵类之后,我现在面对的是泛型T不能被使用,我需要它来支持一些可以加和乘的接口。

问题是我可以在我的类中覆盖操作符,但是我不能引入一个支持操作符的接口。我有一个内置类型的操作符,但仍然没有接口。

在这种情况下,考虑到您不想复制工人类主体,您会做什么?包装和隐式铸造对我帮助不大,我对一个漂亮的解决方案很感兴趣。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-03 11:12:29

为此,你需要通用数学。幸运的是我做过这件事。用法将类似于这种“复杂”(即x+iy) 示例。操作符类现在是MiscUtil的一部分。

票数 5
EN

Stack Overflow用户

发布于 2008-10-03 19:33:38

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

代码语言:javascript
复制
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;
  }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/166360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档