簡體   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