2014-01-14 80 views
1

我是編程新手,嘗試將一些c#代碼轉換爲java。我試圖找出下面的方法究竟是什麼。我如何在java中編寫相同的代碼。java中C#方法的等效代碼

這是在C#中的抽象類的一部分

// 
// Summary: 
//  Gets a page object of the desired type that wraps this document. 
// 
// Type parameters: 
// TPage: 
//  The WatiN.Core.Document.Page<T0>() subclass 
// 
// Returns: 
//  The page object 
public virtual TPage Page<TPage>() where TPage : Page, new(); 
+0

期待java擁有類似C#的功能就像是期待我的133 MHz 586機器配備12 MB RAM,當我13歲時運行Windows 8時,我曾用它來玩魔獸爭霸1。 –

+1

這不是C#代碼 - 將「虛擬「與」抽象「,你有C#代碼(假設它在抽象類中)。 –

+0

@DaveDoknjas它可能是從引用程序集中的metghod上按'F12'的結果複製而來的。 – Vache

回答

4

根據您提供的文檔,這將是最好的解決方案,因爲您可能希望類型信息查找正確的頁面。

public <T extends Page> T getPage(Class<T> pageClass) 

你會再使用這樣的:

MyPage page = myClass.Page(MyPage.class); 

這樣的設計是因爲Java的實現仿製藥正在根據各地類型擦除,所以你需要在所需類型的傳遞參數來解決它。

+0

+1這是唯一可以實例化'T'的方法,因此它與使用Java泛型的new()類似。 – Trillian

0
TPage Page<TPage extends Page>(); 

所有方法都默認在java虛擬所以這部分很不錯。

+0

但是這不會創建一個方法?或者是基於C#代碼的無關緊要的東西? – MadProgrammer

+0

但是你定義的簽名不是一個有效的方法簽名,但會產生一個實例變量......只是好奇;) – MadProgrammer

+0

@MadProgrammer oops,這些更改有幫助嗎?仍然有一個問題,確保TPage定義了一個構造函數接受0個參數,但我不知道這是否可能。 –

0
public abstract <TPage extends Page> TPage Page(); 

但是在C#中沒有與「new()」約束相當的Java。