- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
假设我有这个结构和一个方法:
gói chính
nhập khẩu (
"fmt"
"phản ánh"
)
kiểu MyStruct struct {
}
func (a *MyStruct) AAction() {
fmt.Println("Hello a")
}
现在,如果我想通过字符串调用方法“AAction”,我可以使用反射(这可行):
hàm main() {
reflect.New(reflect.TypeOf(MyStruct{})).MethodByName("AAction").Call([]reflect.Value{})
}
问题是,我不想将 MyStruct{} 用作表达式,而是用作字符串。当然这是行不通的:
hàm main() {
theStruct := "MyStruct"
theAction := "AAction"
reflect.New(reflect.TypeOf(theStruct)).MethodByName(theAction).Call([]reflect.Value{})
}
因为 reflect.Typeof(theStruct) 将是一个字符串。我试着通读文档,遗憾的是,我找不到任何有用的东西。
我发现了这个类似的问题:Call a Struct and its Method by name in Go?
在已接受的问题下,OP 会问:
The issue in my case Is I cant not declare t is typed T, its must be some how I can declare t typed T by the name of T is string "T"
phụ thuộc vào
回答[...] I would suggest to match the name against the string "T" somewhere in your code [...]
这并没有解决问题,因为我仍然需要在某处调用 MyStruct{}
。
问题是:有没有办法通过将名称作为字符串来使用结构? (无需手动将结构的名称映射到结构)
sử dụng reflect.TypeOf(MyStruct{})
的工作版本: PlayGround
无效版本,显然是在字符串上调用方法:PlayGround
câu trả lời hay nhất
对不起,你不能。答案是:您可以不。没有内置或预初始化的类型名称注册表。
要开始使用反射(phản ánh
包),您需要一个值(所讨论的类型)。基于sợi dây
(类型的sợi dây
名称),获取不到该类型的值,所以无法启动。
如果您只想通过 sợi dây
类型名称来执行您想要的操作,则需要在执行您想要的操作之前构建您自己的“注册表”。
关于反射:按字符串构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36424907/
1. Phản ánh 1. Định nghĩa Cơ chế phản ánh của Java là ở trạng thái đang chạy, đối với bất kỳ lớp nào, tất cả các thuộc tính và phương thức của lớp này (ngay cả khi chúng là riêng tư) đều có thể được biết đối với bất kỳ đối tượng nào, nó có thể được gọi là bất kỳ phương thức và thuộc tính nào; , vậy thì tôi
Có cách nào để lấy tất cả các phương thức (riêng tư, đặc quyền hoặc công khai) từ bên trong đối tượng JavaScript không? Đây là đối tượng ví dụ: var Test = function() { // Private m
Tôi có một lớp trừu tượng "A" và các lớp "B" và "C" mở rộng A. Tôi muốn tạo các phiên bản này trong thời gian chạy dựa trên một số biến. Như được hiển thị bên dưới: public abstract class A { public abstract int
Giả sử chúng ta có nhiều đối tượng trong bộ nhớ. Mỗi người có một ID khác nhau. Làm cách nào tôi có thể lặp qua bộ nhớ để tìm một đối tượng cụ thể để so sánh với một số id? Để lấy nó qua getattr và sử dụng nó? Câu trả lời hay nhất Bạn nên duy trì một bộ sưu tập các đối tượng này vì chúng nằm trong thuộc tính lớp
Giả sử tôi có cấu trúc này và một phương thức: package main import ( "fmt" "reflect" ) type MyStruct struct { } func (a *MyS
Giới thiệu về C# Reflection Reflection (Reflection) là một cơ chế rất hữu ích trong ngôn ngữ C#. Nó có thể lấy thông tin kiểu của một đối tượng một cách linh hoạt trong thời gian chạy và thực hiện các thao tác tương ứng. Reflection là một phương thức được sử dụng rộng rãi trong .NET Framework
Tổng quan Cơ chế phản chiếu đề cập đến khả năng lấy thông tin lớp một cách linh hoạt và vận hành các thành viên lớp (trường, phương thức, hàm tạo, v.v.) trong thời gian chạy. Thông qua phản ánh, chúng ta có thể sử dụng động lực thời gian chạy mà không cần biết loại cụ thể tại thời điểm biên dịch.
Trước tiên chúng ta hãy xem xét một số phép thuật public class Test { Private static void ChangeStrValue(String str, char[] value) {
Cấu trúc struct struct được sử dụng để tùy chỉnh các cấu trúc dữ liệu phức tạp, có thể chứa nhiều trường (thuộc tính) và có thể được lồng vào nhau; kiểu cấu trúc trong go được hiểu là một lớp và các phương thức có thể được định nghĩa, hơi khác so với định nghĩa hàm; kiểu cấu trúc là kiểu giá trị
Phản ánh 1. Định nghĩa về phản chiếu Cơ chế phản chiếu của Java là ở trạng thái đang chạy, đối với bất kỳ lớp nào, tất cả các thuộc tính và phương thức của lớp này đều có thể được biết đối với bất kỳ đối tượng nào, bất kỳ phương thức và thuộc tính nào của nó đều có thể được gọi; , chúng tôi
Định nghĩa về cơ chế phản chiếu (phản ánh) của Java là ở trạng thái đang chạy, đối với bất kỳ lớp nào, tất cả các thuộc tính và phương thức của lớp này đều có thể được gọi; đối với bất kỳ đối tượng nào, bất kỳ phương thức và thuộc tính nào của nó đều có thể được gọi. Thôi nào, sau đó chúng ta có thể
Tôi có một Java POJO: public class Event { id chuỗi riêng; tên chuỗi riêng tư Lon;
Tôi đã viết hàm sau để kiểm tra xem một lớp đơn nhất định có thực hiện một đặc điểm hay không. /** Cho một lớp singleton, trả về đối tượng singleton nếu cls triển khai T.
Tôi đang nghiên cứu những điều cơ bản về phản ánh Java và quan sát về các phương thức lớp. Tôi cần có một phương thức phù hợp với đặc điểm kỹ thuật được mô tả bởi hàm getMethod(). Tuy nhiên khi tôi làm điều này tôi nhận được NoSuchMethodExceptio
Tôi đang truy xuất danh sách các thuộc tính IEnumerable với mã sau: BindingFlags bindFlag = BindingFlags.Instance BindingFlags.Public |
Tôi cần kiểm tra xem một thuộc tính có thuộc tính cụ thể được xác định trong lớp đối tác của nó hay không: [MetadataType(typeof(Metadata))] public seal một phần lớp Địa chỉ { p
Tôi đang cố gắng sử dụng Reflections (do org.reflections cung cấp) để thực hiện một số công việc nặng nhọc nên tôi không cần phải tạo danh sách các phiên bản cho mỗi lớp theo cách thủ công trong một khoảng thời gian dài. Tuy nhiên, Reflections đã không theo kịp tôi.
API phản chiếu scala (2.10) có cung cấp cách dễ dàng hơn để tìm kiếm các lớp đã tải và lọc danh sách theo các lớp cụ thể triển khai các đặc điểm đã xác định không? IE; đặc điểm Widget { def Turn(): Int } lớp
Tôi muốn sử dụng sự phản chiếu trong thời gian chạy để tìm tất cả các lớp có chú thích nhất định, nhưng tôi không biết cách thực hiện việc này trong Scala. Sau đó, tôi muốn lấy giá trị của chú thích và tự động khởi tạo một thể hiện của từng lớp được chú thích ánh xạ tới giá trị chú thích được liên kết. Đây là điều tôi muốn làm: gói pr
Điều này đang diễn ra trong đầu tôi, ai đó có thể giải thích cho tôi rõ hơn không? http://mathworld.wolfram.com/Reflection.html Tôi đang tạo một trò chơi chiến đấu đột phá 2d nên tôi cần quả bóng có thể đập vào tường khi nó chạm vào nó
Tôi là một lập trình viên xuất sắc, rất giỏi!