有没有一种可行的方法来在Java中加载任何类时运行我自己的代码,而不强制用户显式地并用自定义类加载器手动加载所有类?
无需过多细节,每当实现某个接口的类读取其注释将其与另一个类链接,并将该对赋予第三个类时.
编辑:哎呀,我会详细说明:我正在做一个事件处理库.我正在做的是让客户端代码执行他们自己的侦听器/事件对,这需要作为一对在我的库中注册.(嗯,毕竟不是那么久).
进一步编辑:目前客户端代码需要手动注册这对类/接口,这非常有效.我的意图是将其自动化,我认为将两个类与注释联系起来会有所帮助.接下来,我想摆脱需要始终保持注册列表最新的客户端代码.
PS:静态块不会,因为我的接口被捆绑到一个库中,客户端代码将创建更多的接口.因此,抽象类也不会这样做,因为它必须是一个接口.
简而言之,我正试图做" classObject.getDeclaredClasses()" 的倒数.
我有一个接收类型对象的方法Class<? extends Object>.我想弄清楚它是否是一个内部类,如果是,我想访问周围的类'对象实例.
是否有智能API,或者我被迫做一些字符串操作和解析?
据我所知,OAuth标准对OAuth的真实行为方式非常宽松,但......
我为数据库中的各种OAuth服务存储OAuth访问令牌.如果这些令牌受到损害,他们是否可以被第三方使用?即,给定的令牌是否仅限于我的api和密钥?
如何关闭Netbeans中波浪形的红色下划线?我不打算在打字的时候被打断,并告诉他说完半行代码是错误的.
所有的编码标准和良好实践都不谈,Git 本身如何处理大型提交与小型提交.例如,Git是否更聪明,分支合并(例如,更少的冲突)与任何一种情况,垃圾收集变得更有效,或类似的东西?或者有什么区别?
要清楚,我的意思是代码从A修改为B的情况,"巨大的提交"只是将代码从A直接改为B,而"小提交"有很多中间提交(比方说,对于每个小的特征变化),但最终在完全相同的B.
有没有可行的Hibernate替代品?优选不以JPA为基础的东西.
我们的问题是我们正在构建一个复杂的(如同许多对象相互引用)有状态的RIA系统.似乎Hibernate主要用于一次性应用程序 - JSF等.
问题主要是延迟加载.由于在初始化和实际加载惰性集合之间可能存在多个HTTP请求,因此每个事务的会话都是不可能的.一个长期存在的会话(每个应用程序一个)也不能正常工作,因为一旦事务遇到障碍并抛出异常,整个会话就会失效,因此延迟加载的对象会中断.然后有各种各样的东西对我们不起作用(比如隐藏数据持久化来自初始化事务之外的数据).
除了我可怜的解释,最重要的是Hibernate做了我们不喜欢的魔术.看起来TopLink并没有更好,它也是在EJB之上编写的.
因此,无状态持久层(甚至是足够明亮的面向对象的数据库抽象层)是我们最需要的.
有什么想法,还是我要求不存在的东西?
编辑:我很抱歉我的模糊术语,并感谢大家的更正和有见地的答案.那些纠正我的人,你们都是正确的,我的意思是JPA,而不是EJB.
我正在做一个Java EE应用程序,而且我已经得出结论,我需要为我的对象提供缓存.
我目前的要求并不比某种键值存储复杂得多,可能是可以处理树的东西.编写一个包含一个或多个贴图的简单自定义静态/单例类很有诱惑力.但是,由于有几个实现或多或少都像这样(Memcached浮现在脑海中),我开始想知道使用Memcached必须有一些附加值,而不仅仅是我自己的实现.
所以,我想问一下这个问题:当我可以自己制作静态数据时,为什么要拿起现成的缓存呢?反之亦然; 当我可以拿起现成的缓存时,为什么要写一个静态类呢?
这是我第二次发现自己编写这种代码,并决定必须有一种更易读的方法来实现这一点:
我的代码试图找出一些东西,它没有很好地定义,或者有很多方法可以实现它.我希望我的代码尝试几种方法来解决它,直到它成功,或者它用完了策略.但我还没有找到一种方法来使这个整洁和可读.
我的具体情况:我需要从界面中找到特定类型的方法.它可以注释为显式,但它也可以是唯一合适的方法(根据其参数).
所以,我的代码目前如下所示:
Method candidateMethod = getMethodByAnnotation(clazz);
if (candidateMethod == null) {
candidateMethod = getMethodByBeingOnlyMethod(clazz);
}
if (candidateMethod == null) {
candidateMethod = getMethodByBeingOnlySuitableMethod(clazz);
}
if (candidateMethod == null) {
throw new NoSuitableMethodFoundException(clazz);
}
Run Code Online (Sandbox Code Playgroud)
有必须是一个更好的办法?
编辑:如果找到,方法返回一个方法,null否则.我可以将其切换为try/catch逻辑,但这几乎不会使它更具可读性.
编辑2:不幸的是,我只接受一个答案:(
java ×5
.htaccess ×1
access-token ×1
caching ×1
class ×1
classloader ×1
eclipselink ×1
git ×1
heuristics ×1
hibernate ×1
java-ee ×1
jpa ×1
macos ×1
netbeans ×1
oauth ×1
parsing ×1
performance ×1
reflection ×1
regex ×1
security ×1
settings ×1