cuốn sách gpt4 ai đã làm

java - Chuyển đổi ngầm định, ghi đè, khả năng tương tác

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:51:55 26 4
mua khóa gpt4 Nike

Tôi có lớp sau trong Java:

lớp công khai GeneralClass {
số nguyên công khai getInt(Double d) {
trả về d.intValue();
}
}

Tôi muốn mở rộng lớp này trong scala như

nhập scala.collection.JavaConversions._
nhập scala.collection.JavaConverters._

lớp SpecialClass mở rộng GeneralClass {

ghi đè def getInt(d: Double): Int = {
d.intValue()
}
}

Vấn đề là cả scala.Double và scala.Int đều không được tự động chuyển đổi sang các loại java tương ứng.

biên tậpThông báo lỗi là:

phương thức getInt không ghi đè gì. Lưu ý: các siêu lớp của lớp SpecialClass chứa các thành viên không phải cuối cùng sau đây có tên getInt: def getInt(d: Double): Số nguyên.

Bất cứ ai có thể giải thích điều này và có thể chỉ ra một giải pháp tao nhã?

câu trả lời hay nhất

getInthiện hữu Lớp chuyên ngànhsẽ không che đậy Lớp chung Các phương thức trong. Để có thể ghi đè,Lớp chuyên ngành Các tham số của hàm phải trái ngược nhau và kiểu trả về phải là hiệp biến. Không phải trong trường hợp của bạn.

Vì vậy trừ khi bạn getInt Có cái gì đó ở trong đó Lớp chuyên ngànhnó cần loại T :> java.lang.DoubleKiểu trả về là T <: java.lang.Integer , nó sẽ không ghi đè lên nó.

Về câu hỏi của bạn, tôi thực sự không nghĩ rằng phương pháp như vậy là cần thiết vì trình biên dịch Scala sẽ ngầm chuyển đổi Java double thành Scala Double.

Về java - chuyển đổi ngầm, ghi đè, khả năng tương tác, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/17319756/

26 4 0
Taklimakan
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress