[和管子对话] 3 2007-4-11/从堆栈到反射,想哪儿打哪儿
发布日期:2007.4.11 作者:Anytao
©2007 Anytao.com 转贴请注明出处,留此信息。
本文将介绍以下内容:
• 浅议堆栈
• 乱图反射
• 胡言乱语的技术
----------------------------------------------------------------------------------
管语:
平常说堆是堆,栈和堆栈这个名词是一样的
栈不需要程序员来操心,由编译器来负责,堆需要你维护,C++中的new和delete就是干这事的
在C#和java中,堆也不需要了,有垃圾自动收集
EJB的实体Bean分为BMP和CMP两种
我觉着这和堆、栈像,堆就是BMP,栈是CMP
BMP是用户管理bean生命周期
CMP是容器管理bean生命周期
王论:
哦,知道SharePoint吗?
管语:
哦!就是微软的Portal解决方案!
大公司都有Portal解决方案 IBM/BEA,好像oracle也有的
王论:
给我解释一下Portal吧,是门户解决方案的意思吧
网上公文流转,工作流什么的,都是流转的office文件,word最多,sharepoint是MS的,先天优势就不用说了,其实最主要还是office牛X呀!
管语:
我认为通俗地说,portal就是企业门户,这里边什么都有!有这个企业的日常办公、核心业务什么的,就是吃喝拉撒睡,这里一锅烩了!
什么是Portal?英文字面是“入口”,国内有叫“门户”技术的,但我觉得“集成”技术更能表达它的意思。Portal是一个基于web的应用程序,它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。
今天题目我来定,先考你一下:P
接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类(concrete class)?
王论:
接口可以继承接口;抽象类可以实现接口;抽象类不能继承实体类;
最后一个没把握
管语:
最后一个的答案是:当实体类有明确的构造函数时,可以,没有时,不可以
王论:
问题是,抽象类继承实体类,用来做什么
呵呵,我写了一段代码,发现这样写根本没有意义,抽象类不能实体化,让他继承实体类,没有意义
管语:
不知道这问题有意义吗?这是网上说的java经典面试题,
王论:
我认为抽象类一般都是在类结构的上层
王论:
我试过了,继承下来没有问题,就是实体类-抽象类-实体类的办法没有问题,基本和一般的继承区别不大,但是中间那一层作为抽象类,实在没有什么意义,还强迫最下层的类实现其抽象方法,不过,我还真没发现这种继承的意义何在,完全颠覆了抽象类作为公共定义的意义。
另外实体类,可以没有明确定义构造函数,抽象类继承也没有问题。
以下是一个示例:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

管语:
我们讨论反射吧,C#中有反射机制吗?
王论:
反射技术太牛了
反射,Reflection,通过它我们可以在运行时获得各种信息,如程序集、模块、类型、字段、属性、方法和事件 通过对类型动态实例化后,还可以对其执行操作 一般用于插件式框架程序和设计模式的实现,当然反射是一种手段可以充分发挥其能量来完成你想做的任何事情
我的理解是,你甚至可以利用发射调用任何Dll中的函数、属性、方法等
Assembly assembly = Assembly.LoadFile(“DGGL.dll”);
管语:
SUN看看关于java中的reflection(反射)机制的教学就全明白了。Java虽然不想Ruby,Python那样是动态语言,但它确提供了一种叫做Reflection的机制能够在程序运行时得到类和方法本身的一些meta data。这样做的一大好处在于减少大量的hard coding。Reflection机制甚至能帮助你动态加载某个类。写过JDBC的人都知道Class.forName(drivername),其中drivername是String类型,能够在运行时确定,因此加载数据库驱动类的行为也就在运行时发生了,而非编译时。
你的意思是利用反射,可以达到另外一种强的效果,比如调用本地的DLL,这个反射,似乎是动态编译
王论:
非也,调用本地Dll只是个例子,反射在设计模式中经常可以发挥巨大的作用,例如工厂类中,一个小例子看看:
2 {
3 public static void Main(string[] args)
4 {
5 IRun animalRun = RunFactory.GetRun();
6 animalRun.Run();
7 }
8 }
2 {
3 void Run();
4 }
5
6 public class DogRun : IRun
7 {
8 public void Run()
9 {
10 Console.WriteLine("Dog is running");
11 }
12 }
13
14 public class DuckRun : IRun
15 {
16 public void Run()
17 {
18 Console.WriteLine("Duck is running");
19 }
20 }
运行结果为:
问题抛出:
1 抽象类,可以从实体类继承,这样实现的意义何在,在什么场合有用?请大家畅所欲言。
2 反射的典型应用还有哪些?
©2007 Anytao.com 转贴请注明出处,留此信息。
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。
This posting is provided "AS IS" with no warranties, and confers no rights.
Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
https://worktile.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架