草庐IT

private_class_greeter

全部标签

Java/Scala 反射 : Get class methods in order and force object init

我有一个类,其中有一些对象作为内部方法。我也问了thisquestion不久前得到了一个很好的答案,但这会导致servlet容器中出现fatalerror。当URLClassLoader请求类时,Scala无法始终如一地生成TypeTag。有问题的项目是开源的,找到here.目前找到的方法是here,但它不保留顺序。对象成员已正确初始化,但顺序是随机的。问题:如何收集类(class)成员:按照定义的顺序以线程安全的方式按父类(superclass)型过滤它们贪心初始化对象(引用module.instance)?更新:不要根据此处的链接建议答案,它们已经过测试并且已知会失败。出于风格原因

java - 使用包私有(private)方法以促进单元测试是一种好习惯吗?

有时我发现自己处于这样的情况下,如果我将某些方法的可见性从私有(private)更改为包私有(private),以便促进单元测试模拟、断言...,单元测试会更容易。一个例子就是这个假设我有一个包含4个属性X、Y、Z和R的对象A,其中X、Y和Z是集合,R是每个集合的不同元素之间的关系,例如关系将由元素组成X,Y的一个元素和Z的一个元素。对象A不允许直接访问X、Y、Z或R,相反它提供了丰富的API,允许您在X、Y和Z上创建新元素,也允许您将这些元素混合到新的R元素中。对于单元测试,拥有publicgetX()、publicgetY()、publicgetZ()和publicgetR()方法

java - Function.class 中下界通配符的目的是什么?

在Java8的Function.class中,我们有:defaultFunctioncompose(Functionbefore){Objects.requireNonNull(before);return(Vv)->apply(before.apply(v));}撰写接受:Functionbefore而不是:Functionbefore“V”下限这一事实是否有任何合理的情况? 最佳答案 ?super允许返回的Function的输入类型(V)不同于参数输入类型。例如,这与?super版本但不是替代版本。Functionbefore=

java - Maven/逆向 lambda : how to detect dependencies on Java 8 classes

背景:我们有一个基于maven的java项目,目标是JRE1.7,但是源代码使用了lambda,所以我们使用retrolambda来转换Java8源代码到Java7。我们也使用StreamSupport当我们需要流、函数*、可选等时向后移植库。retrolambda的使用涉及将项目的源语言和目标语言级别配置为1.8。如果不依赖于java8类或方法(如java.util.stream.*、java.util.Optional或java8类似于Collection.forEach)。如果有这样的用法,则构建通过,但在运行时失败,在Java8的JVM下运行时。问题:我的目标是在存在此类依赖项

java - 如何读取.class文件?

这个问题在这里已经有了答案:HowcanIopenJava.classfilesinahuman-readableway?(17个答案)关闭9年前。我需要在我的java程序中读取java的.class文件的内容或者是否有任何方法可以读取相同的内容。实际上我想从.class文件中检索局部变量表,行号表等java但我没有任何方法来读取它?

java - 为什么在java内存模型下java.lang.Class.newInstance0()不是严格正确的?

我在java.lang.Class.newInstance0()中看到了以下注释在JDK1.7更新7中:NOTE:thefollowingcodemaynotbestrictlycorrectunderthecurrentJavamemorymodel.谁能解释一下为什么? 最佳答案 我在这段代码中看到的唯一问题是“cachedConstructor”字段是易变的,虽然它保证了线程之间的值可见性效果,但这个特定的代码块有一个怪癖,不同的线程可以在值将被删除之前将cachedConstructor视为null由其中一个线程分配,即初始

java - Datanucleus 警告 : Class was specified in persistence-unit but not annotated, 所以忽略

启动我的应用程序时,我会为每个类看到此警告:WARN[DataNucleus.MetaData]-Classcom.mycomp.MyClasswasspecifiedinpersistence-unitmyPersistenceUnitbutnotannotated,soignoring该应用程序正确启动,因此没有直接问题,但我想知道这个即将到来的形式,以及如何避免id。我的persistence.xml看起来像:org.datanucleus.api.jpa.PersistenceProviderImpl我正在使用Spring在GoogleAppEngine上运行我的应用程序。但我

java - 注解处理中如何获取父类(super class)名

我运行自己编写的注解处理器来生成一些基于注解类的新Java代码。以下是我试图获取当前处理的类的父类(superclass)名称。TypeMirrorsuperTypeMirror=typeElement.getSuperclass();finalTypeKindsuperClassName=superTypeMirror.getKind();log("A=================="+superClassName.getClass());log("B=================="+superClassName.getDeclaringClass());typeEleme

java - Class 类的实例是否保证每个类加载器都是单例?

那么以这种方式检查类是否相等是否有效:if(object.getClass()==anotherObject.getClass()){}可能答案是肯定的,因为Class类没有覆盖equals()所以它看起来像Object.equals()适用于Class相等。但是,如果这在其他地方有记录,我会很感兴趣。谢谢。 最佳答案 引用JLSSection12.2:Well-behavedclassloadersmaintaintheseproperties:Giventhesamename,agoodclassloadershouldalwa

java - 带有私有(private)构造函数的最终类,设计原则是什么

我最近正在浏览一个Netflixopensourceproject在那里我发现了final类和私有(private)构造函数的使用。我完全知道final是为了避免继承private是不允许实例化但我只是想知道为什么将它们一起使用。虽然方法是静态的,所以我们可以在不实例化的情况下使用它们,但仍然渴望了解其背后的设计原则。 最佳答案 有了这段代码,你将拥有这些功能不允许任何人子类化(扩展)您的类不允许实例化你的类将变量或类设置为final可以提高性能(虽然不多,但在大型项目中作为常见做法使用会有所不同)在这种情况下,我看不到用于获取实例