[英]How can I use JTextField input as the identifier of a new class instance?
[英]How can I make a new data type called Identifier that every instance of it should be a valid identifier name?
我可以按照標題中的要求進行這門新課嗎,這是我的嘗試。
import javax.lang.model.*;
public class Ide{
public Ide New(String ide){
if (SourceVersion.isName(ide)) {
return ide;
}
}
}
但是它無法編譯,因為我無法將String ide轉換為Ide類型,我該怎么做? 我需要輸入Ide類型,謝謝。
此代碼有幾個問題:
String
是final
。 這意味着任何類都不能從String
繼承。 New
應該是static
,否則該方法將毫無意義。 要求一個類的實例創建其他實例就像“雞與蛋”問題一樣,只是您一個都沒有。 New
確實是不好的樣式。 new
是Java中的關鍵字,並且會引起編碼錯誤,使代碼的可讀性降低...。 而且方法名稱不應大寫。 String
擴展類,但String
-parameter不會自動成為Ide
-instance。 因此, return ide;
不會編譯。 解決您的問題的方法是:
使用private
構造函數和static
工廠方法。 該類只能是包裝器類。 只需以適配器樣式實現即可提供String
提供的所需方法:
class Ide{
private String str;
private Ide(String str){
this.str = str;
}
public static Ide createIde(String str)
throws IllegalArgumentException
{
if(validIdentifier(str))
return new Ide(str);
else
throw new IllegalArgumentException("Invalid identifier: " + str);
}
//examples for adapter-like method-implementation
public String toString(){
return str.toString();
}
public char charAt(int i){
return str.charAt(i);
}
}
您的代碼在許多層次上都是錯誤的。 我建議您首先了解Java的基礎知識。 在考慮編寫自己的代碼之前。
您的代碼中的問題:
長話短說:您正在嘗試建造摩天大樓,但您已經缺乏在地面上挖掘整塊土地的技能。 這並不是要侮辱您,而是事實:您必須首先學習很多東西。 不要指望我們向您解釋所有您想出一個合理的程序所需的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.