这是让我感到困惑的一个.我正在尝试实现一个基本的Hibernate DAO结构,但是遇到了问题.
这是基本代码:
int startingCount = sfdao.count();
sfdao.create( sf );
SecurityFiling sf2 = sfdao.read( sf.getId() );
sfdao.delete( sf );
int endingCount = sfdao.count();
assertTrue( startingCount == endingCount );
assertTrue( sf.getId().longValue() == sf2.getId().longValue() );
assertTrue( sf.getSfSubmissionType().equals( sf2.getSfSubmissionType() ) );
assertTrue( sf.getSfTransactionNumber().equals( sf2.getSfTransactionNumber() ) );
Run Code Online (Sandbox Code Playgroud)
它在第三个assertTrue上失败,它试图将sf中的值与sf2中的相应值进行比较.这是例外:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at com.freightgate.domain.SecurityFiling_$$_javassist_7.getSfSubmissionType(SecurityFiling_$$_javassist_7.java)
at com.freightgate.dao.SecurityFilingTest.test(SecurityFilingTest.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
Run Code Online (Sandbox Code Playgroud) 我是Objective C的新手,我无法确定语言中是否存在等效的静态构造函数,这是类中的静态方法,将在此类的第一个实例之前自动调用被实例化.或者我是否需要自己调用初始化代码?
谢谢
如果类名存储在字符串中,PHP是否可以从类的名称实例化对象?
我们的代码涉及一个POD(Plain Old Datastructure)结构(它是一个基本的c ++结构,其中包含其他结构和POD变量,需要在开始时进行初始化.)
根据我所读到的,似乎:
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
Run Code Online (Sandbox Code Playgroud)
应该将所有值初始化为零,如下所示:
myStruct = new MyStruct();
Run Code Online (Sandbox Code Playgroud)
但是,当以第二种方式初始化结构时,Valgrind后来抱怨"当使用这些变量时,条件跳转或移动取决于未初始化的值".我的理解是否存在缺陷,或者Valgrind是否会误报?
我注意到我的一些函数实际上没有访问对象,所以我创建了它们static.然后编译器告诉我他们访问的所有变量也必须是静态的 - 到目前为止,这是可以理解的.我有一堆字符串变量,如
string RE_ANY = "([^\\n]*)";
string RE_ANY_RELUCTANT = "([^\\n]*?)";
Run Code Online (Sandbox Code Playgroud)
在课堂上等等.然后我做了所有static const因为他们永远不会改变.但是,如果我将它们移出类,我的程序只会编译:否则,MSVC++ 2010会抱怨"只有静态常量变量可以在类中初始化".
那很不幸.有解决方法吗?我想把它们留在他们所属的班级里面.
通俗地说,琐碎类型,标准布局类型和POD之间有什么区别?
具体来说,我想确定是否new T与new T()任何模板参数不同T.哪种类型的性状is_trivial,is_standard_layout而且is_pod我应该选择?
(作为一个附带问题,可以在没有编译器魔法的情况下实现任何这些类型特征吗?)
我有2个罐子,我们称之为a.jar和b.jar.
b.jar取决于a.jar.
在a.jar中,我定义了一个类,我们称之为StaticClass.在StaticClass中,我定义了一个静态块,调用名为"init"的方法:
public class StaticClass {
static {
init();
}
public void static init () {
// do some initialization here
}
}
Run Code Online (Sandbox Code Playgroud)
在b.jar中,我有一个main,所以在main中,我希望已经调用了init()方法,但实际上并没有.我怀疑是因为静态类没有被jvm加载,任何人都可以告诉我
谢谢
我有为UIViewController的子类编写自定义init的问题,基本上我想通过viewController的init方法传递依赖,而不是直接设置属性 viewControllerB.property = value
所以我为我的viewController做了一个自定义初始化,并调用超级指定的init
init(meme: Meme?) {
self.meme = meme
super.init(nibName: nil, bundle: nil)
}
Run Code Online (Sandbox Code Playgroud)
视图控制器界面位于故事板中,我还将自定义类的界面作为我的视图控制器.即使你没有在这个方法中做任何事情,Swift也需要调用这个init方法.否则编译器会抱怨......
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试调用我的自定义init时,MyViewController(meme: meme)它根本不在我的viewController中初始化属性...
我试图调试,我在我的viewController中找到,先init(coder aDecoder: NSCoder)调用,然后调用我的自定义init.但是这两个init方法返回不同的self内存地址.
我怀疑有毛病初始化为我的viewController,它总是会返回self与init?(coder aDecoder: NSCoder),其中,有没有实现.
有谁知道如何正确地为您的viewController制作自定义初始化?注意:我的viewController接口是在storyboard中设置的
这是我的viewController代码:
class MemeDetailVC : UIViewController {
var meme : Meme!
@IBOutlet weak var editedImage: UIImageView!
// TODO: incorrect init
init(meme: Meme?) {
self.meme = meme
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: …Run Code Online (Sandbox Code Playgroud) 使用C++ 11,我们现在可以在头声明中初始化类成员:
class aClass
{
private:
int mInt{100};
public:
aClass();
~aClass();
};
Run Code Online (Sandbox Code Playgroud)
所以我有点困惑.传统上,构造函数中的初始化列表已用于成员初始化:
aClass::aClass()
: mInt(100)
{
...
}
Run Code Online (Sandbox Code Playgroud)
声明中的新C++ 11成员初始化功能是否使初始化列表过时了?如果没有,一个优于另一个的优势是什么?什么情况会使声明初始化有利,或初始化列表有利?应该何时使用另一个?
这是我的代码:
public class StupidClass {
static {
System.out.println("Stupid class loaded!");
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试,我分开运行.
import org.junit.Test;
public class StupidTest {
@Test
public void foo() throws ClassNotFoundException {
final Class<?> stupidClass = Class.forName("StupidClass");
System.out.println(stupidClass.getSimpleName());
}
@Test
public void bar() throws ClassNotFoundException {
final Class<StupidClass> stupidClassClass = StupidClass.class;
System.out.println(stupidClassClass.getSimpleName());
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行test foo时,我会看到:
Stupid class loaded!
StupidClass
Run Code Online (Sandbox Code Playgroud)
但是,当我运行测试栏时,我看到的是:
StupidClass
Run Code Online (Sandbox Code Playgroud)
从这个页面引用..
类对象由Java虚拟机在加载类时自动构造,并通过调用类加载器中的defineClass方法来构造.
所以我的理解是,在测试栏中,Stupid类被加载,否则我会看到一个null我猜?因此创建了Class对象,因为类本身已被加载.
现在引用这个页面
当JVM(类加载器 - 要特定)加载StaticClass(第一次在代码中引用时出现)时,运行静态初始化块.
所以我期待看到"愚蠢的课程加载!" 测试栏中的文字也是,但我不是.
同样引用Thinking in Java
Candy,Gum和Cookie中的每个类都有一个静态子句,该子句在第一次加载类时执行.
这似乎不是很准确.. …
initialization ×10
c++ ×4
static ×3
class ×2
constructor ×2
java ×2
c++11 ×1
calloc ×1
declaration ×1
hibernate ×1
initializer ×1
ios ×1
object ×1
objective-c ×1
php ×1
pod ×1
struct ×1
swift ×1
type-traits ×1
valgrind ×1