Tôi mới sử dụng Java và tôi đã gặp phải sự cố sau:Tôi nên trả về các kiểu khác nhau trong một phương thức dựa trên giá trị của một chuỗi trong Java như thế nào?
Tôi đã tạo một số lớp mà tất cả đều triển khai giao diện "Trình phân tích cú pháp". Tôi có một JavaParser, PythonParser, CParser và cuối cùng là một TextParser.
Tôi đang cố gắng viết một phương thức để nó sẽ lấy một tệp hoặc một chuỗi (đại diện cho tên tệp) và trả về trình phân tích cú pháp thích hợp cho phần mở rộng của tệp.
Dưới đây là một số psuedo-mã của những gì tôi đang cố gắng làm cơ bản:
public Parser getParser(String filename)
{
String extension = filename.substring(filename.lastIndexOf("."));
switch(extension)
{
case "py": return new PythonParser();
case "java": return new JavaParser();
case "c": return new CParser();
default: return new TextParser();
}
}
Nói chung, đây là cách đúng đắn để xử lý tình huống này? Ngoài ra, làm thế nào tôi nên xử lý một thực tế là Java không cho phép chuyển đổi trên dây? Tôi có nên sử dụng giá trị .hashcode() của chuỗi không?
Tôi cảm thấy như có một số mẫu thiết kế hoặc một cái gì đó để xử lý điều này nhưng nó giúp tôi. Đây có phải là cách bạn sẽ làm điều đó?
Đối với OP: lưu ý việc sử dụng '.equals()' trái với '=='. Đó là quan trọng! Google "java string equals" hoặc một cái gì đó để xem tại sao. – MatrixFrog
+1 để đề cập đến mẫu phương thức Nhà máy. – CoolBeans